I use git quite a bit these days, both with an internal server at work and with a bunch of my projects and random code that now live on my github account. The transition from SVN hasn’t always been easy. Here’s a quick cheat sheet of some of the things that I usually forget.
- 
Show diff of the last commit: git diff HEAD^..HEAD 
- 
Roll back to version xyz of a specific file (where xyz is a SHA1 commit ref): git checkout xyz path/to/file 
- 
Undo any unstaged changes to your branch: git checkout -f 
- 
Undo any staged and working directory changes: git reset --hard 
- 
Update submodules after cloning a repository: git submodule update --init 
- 
Rebase on current master to pull in new changes: git rebase master 
- 
Rebase on current master, but for files that changed, take our version (for some reason, a plain rebase seems to sometimes show conflicts on files that haven’t changed in ages on master): git rebase -s recursive -Xtheirs master 
- 
Delete a local branch: git branch -d BranchName 
- 
Delete a remote branch from origin: git push origin --delete BranchName 
- 
Roll back your branch to the same state as the branch in origin: git reset --hard origin/BranchName 
- 
Revert a specific commit: git revert COMMIT_HASH 
- 
Track an upstream branch (i.e. in a project you forked): git remote add --track master upstream https://github.com/user/project.git 
- 
Pull in upstream changes: git checkout master && git fetch upstream && git merge upstream/master 
- 
Merge “stuff” from someone else’s fork into yours: git remote add other-guys-repo URL_TO_REPO git fetch other-guys-repo git checkout my_new_branch git merge other-guys-repo/master 
- 
Prune local branches that have been deleted in the remote (origin): git remote prune origin 
Comments
comments powered by Disqus