Rebase and squash

Git commit messages

Permission denied (public key)

ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_gmail
ssh-add ~/.ssh/id_rsa_yahoo
ssh-add -l


git rebase -i SHA (squash)
git remote prune origin (prune remotes)
git checkout --ours / --theirs path/file.txt
git commit  multi line commit message
git pull origin master
git checkout -b
git branch -D


git checkout --ours PATH/FILE
git checkout --theirs PATH/FILE

Revert all changes

git clean -df
git checkout -- .

git bisect

git bisect lets you walk forward and backwards in time, automatically checking out branches, and let you isolate something that broke the build. You bisect, run tests, and then say bisect good or bad. git automatically increments binary forward / backward. Then when you find offending commit you compare with head for diff.

Clean master

git bisect start
git bisect bad
git log (pick a suspect commit i.e e576341668478ec71d5e642bb63d9ada57785878)
git checkout e576341668478ec71d5e642bb63d9ada57785878 // check it out
git bisect good         // keep bisecting until you come to the bad commit
git bisect good
git bisect bad         // when you find the bad commit, mark it bad
git bisect good        // then bisect again to get the previous good commit

Note the output. It tells you where the first bad commit is. Note it and check it out. You are now on the bad commit. Compare this commit with the previous to note the differences.

git checkout 39ff0ffe5114a6a9011dd28ebe3ac3bdc92163e0
git diff HEAD~1

Screen Shot 2019-10-30 at 10.16.43 AM

You can copy this output into the paste board to save. Then checkout the previous version that works (a good one) and manual copy in the changes one at a time until you find the source of the break.

git diff HEAD~1 | pbcopy
git checkout HEAD~1

How to checkout someone else’s remote branch

git fetch
git checkout (remote branch name)


git remote add joe
git fetch joe player_state_notifications
git checkout player_state_notifications

How to update submodules

git submodule update --init --recursive

export repos

git checkout-index -a -f --prefix=/destination/path/
git checkout-index -a -f --prefix=/Users/jrasmusson/Downloads/temp/

Note: double — dash on prefix

Multiple branches to find bug

git checkout -b aNewBranch1 SHA1 (test)
git checkout -b aNewBranch2 SHA2 (test)
git checkout -b aNewBranch3 SHA3 (got it!)

git branch -D aBranchToDelete
git difftool branch1 branch2

How to configure a new fork

git remote add upstream
git remote set-url --push upstream no_push
git config remote.pushdefault origin
git config --global push.default simple
git config --global pull.rebase true

How to checkout someone else remote branch

git remote add jr
git fetch jr branch
git checkout branch

How to cherry pick

git checkout
git log (note has of commit you want to cherry pick)
git checkout
git cherry-pick -x SHA

How to merge a remote branch

git merge remotes/origin/release/next

Misc commands

git log --author="xxx" --graph --oneline --no-merges
git log --pretty=oneline
git branch -a (shows all remote branches)
git log --grep="JRA-224:"
git rm --cached file.text (remove file from version control)

Add this to your bash file to do multiline git commit messages
export VISUAL="vim"
export EDITOR="vim"
git reflog // find any commit


How to setup new iOS workflow

How to write a git commit message



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: