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