Git for Engineers — Level by Level›Level 2 · Cheat sheet & self-check

Level 2 — Working in a team · wrap-up

Cheat sheet & self-check

Every command from this section on one page.

04 · Remotes and pull requests

Remotes

git remote -vWhere fetch and push go
git remote add upstream <url>Add the original repository when working from a fork
git fetch --all --pruneDownload all remote updates, drop deleted branches
git pull --rebaseFetch and replay your local commits on top
git push -u origin feature/xPush a new branch and set its upstream
git push --force-with-leaseOverwrite your own rewritten branch safely

Authentication

ssh-keygen -t ed25519 -C you@example.comCreate an SSH key for the Git server
ssh -T git@github.comTest SSH authentication
git config --global credential.helper cacheCache HTTPS credentials in memory for a while

05 · Branching strategies and releases

Tags and releases

git tag -a v1.4.0 -m "Release 1.4.0"Annotated release tag
git push origin v1.4.0Publish one tag (git push --tags publishes all)
git describe --tagsNearest tag and commits since it, e.g. v1.4.0-3-g3f1c9a0
git log v1.3.0..v1.4.0 --onelineWhat changed between two releases

Release branches and hotfixes

git switch -c release/1.4 v1.4.0Start a release branch from a tag
git cherry-pick -x <sha>Copy a fix onto another branch, recording where it came from
git branch --contains <sha>Which branches already include a commit?

06 · Undo and recovery

Undo, by situation

git restore <file>Discard unstaged changes in a file
git restore --staged <file>Unstage, keep the changes
git reset --soft HEAD~1Undo the last commit, keep its changes staged
git reset --hard origin/mainThrow away local commits and changes, match the remote
git revert <sha>New commit that undoes <sha> (safe on shared branches)
git revert -m 1 <merge-sha>Revert a merge commit

Park, move, find

git stash push -m "wip login"Park uncommitted work
git stash list / git stash popSee / restore parked work
git cherry-pick <sha>Copy one commit onto the current branch
git reflogEverywhere HEAD has been, including 'lost' commits
git branch rescue <sha>Give a lost commit a branch again
git bisect start; git bisect bad; git bisect good v1.3.0Binary-search for the commit that broke something