Git: Difference between revisions
| (7 intermediate revisions by the same user not shown) | |||
| Line 14: | Line 14: | ||
sudo add-apt-repository ppa:git-core/ppa | sudo add-apt-repository ppa:git-core/ppa | ||
sudo apt update | sudo apt update | ||
sudo apt install git- | sudo apt install git git-lfs | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 43: | Line 43: | ||
==Branches== | ==Branches== | ||
Branches allow you to work on the repository without creating new forks and using more disk space. | |||
You can use them to create and test changes from a static copy of the code repo. | |||
You can also discard | You can also discard a branch if you decide the feature is no longer needed. | ||
Once the feature has been fully developed, you should rebase the branch onto the head of | Once the feature has been fully developed, you should rebase the branch onto the head of the main branch. | ||
Then you can merge the branch to add the feature to master. | Then you can merge the branch to add the feature to main/master. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| Line 111: | Line 111: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==<code>.gitignore</code>== | ==Special Files== | ||
===<code>.gitignore</code>=== | |||
<code>.gitignore</code> is used to ignore certain files to make sure they do not get accidentally pushed to the remote git repo.<br> | <code>.gitignore</code> is used to ignore certain files to make sure they do not get accidentally pushed to the remote git repo.<br> | ||
You can find a collection of .gitignore files on [https://github.com/github/gitignore Github's gitignore repo].<br> | You can find a collection of .gitignore files on [https://github.com/github/gitignore Github's gitignore repo].<br> | ||
Or you can create a custom .gitignore file at [https://www.gitignore.io gitignore.io]. | Or you can create a custom .gitignore file at [https://www.gitignore.io gitignore.io]. | ||
==<code>.gitattributes</code>== | ===<code>.gitattributes</code>=== | ||
<code>.gitattributes</code> are used to give attributes to paths.<br> | <code>.gitattributes</code> are used to give attributes to paths.<br> | ||
They can be used to assign programming languages to filenames.<br> | They can be used to assign programming languages to filenames.<br> | ||
| Line 133: | Line 134: | ||
==Git Large File Storage (LFS)== | ==Git Large File Storage (LFS)== | ||
[https://github.com/git-lfs/git-lfs/wiki/Tutorial Reference] | [https://github.com/git-lfs/git-lfs/wiki/Tutorial Reference] | ||
* Note that Github charges for LFS so it's best to keep binary files outside of GitHub. | |||
==Sparse checkout== | |||
If you're interacting with a monorepo like [https://github.com/google-research/google-research google-research/google-research], you may be interested in git sparse checkout.<br> | |||
See [https://git-scm.com/docs/git-sparse-checkout Git - git-sparse-checkout Documentation] and [https://github.blog/2020-01-17-bring-your-monorepo-down-to-size-with-sparse-checkout/ Bring your monorepo down to size with sparse-checkout | The GitHub Blog].<br> | |||
This is a relatively new feature so be sure to use an updated version of git. | |||
<syntaxhighlight lang="bash"> | |||
git clone --no-checkout $url | |||
cd $project | |||
git sparse-checkout init | |||
git sparse-checkout add $folder | |||
</syntaxhighlight> | |||