Daniel Roy Greenfeld

Daniel Roy Greenfeld

About | Books | Stories | Jobs

Git Cheatsheet

I use a mix of both command-line and GitHub Desktop, keeping both fresh in my mind. I don't want to go entirely desktop because there are times (ssh-ing for example) when I have to use the command-line.

Note: Anything with an asterisk (*) can be done with GitHub Desktop.

Creating a new branch*

Work in the smallest, most atomic feature branches possible. It's easier for people to review smaller things, meaning you will move faster.

git checkout -b my-new-branch

Committing all my changes*

Note: Don't end commit messages with punctuation. Many projects reject it. Not sure why, it is just a thing.

Note 2: GitHub desktop makes adding long commits easy.

git commit -am "I am committing everything"

Pushing my branch up*

git push origin my-new-branch

Deleting a local branch

git branch -d my-new-branch

Deleting a remote branch (on GitHub, Gitlab, etc)

git branch -D my-new-branch

Squashing all commits into a new one

Rebase is fundamental to working with Git. Yet unless I really think hard I screw them up. Therefore, I tend to just squash everything down to one commit and look good in the process. Until now, no one has known I frequently copy/pasta this series for all my PRs. Here is how I do it:

git checkout my-new-branch
git reset $(git merge-base master my-new-branch)
git add -A
git commit -m "OMG done in just one commit!"
git push --force

Delete all local merged branches

Will delete all your local branches that have been merged. Before you do that, verify what will be deleted 1st.

git branch --merged | egrep -v \
  "(^\*|master|main|dev)" | xargs git branch -d

Tags: git cheatsheet howto