Git cheatsheet


During the years of experience with git I have noted aside many commands which could be useful. In this short article I present the most frequently used git commands and configuration steps I always follow in a new work environment.


  • User information

      $ git config --global "Weselak, Pawel"
      $ git config --global ""
  • SSH keys

      $ ssh-keygen -t rsa -b 4096 -C ""
      $ eval "$(ssh-agent -s)"
      $ ssh-add ~/.ssh/id_rsa
  • safe pull settings

      $ git config --global pull.rebase true
      $ git config --global pull.ff only
  • clear out local repo from deleted branches

      $ git config --global fetch.prune true
  • apply resolved conflicts to remaining rebase steps

      $ git config --global rerere.enabled true 
  • push only the current branch

      $ git config --global push.default simple
  • fix line breaks on Windows

     $ git config --global core.autocrlf true

Typical git flow

  1. Clone remote repository to your local box

     $ git clone
  2. Add another remote

     $ git remote add --track master upstream
  3. Get changes from the remote

     $ git fetch upstream
     $ git merge upstream/master


     $ git pull upstream
  4. Create topic branch

     $ git branch feature/add-readme
     $ git checkout feature/add-readme


     $ git checkout -b feature/add-readme

    info about the branch

     $ git branch
     $ git branch -a
     $ git branch -vv
  5. Commit

     $ git status
     $ git add .
     $ git status
     $ git commit -m " file added"

    optionally edit your commit if you made a mistake

     $ git commit --amend -m " and License files added"

    if you want to keep existing commit message do

     $ git commit --amend --no-edit

    if you need to undo three commits type

     $ git reset --soft HEAD~3

    or use rebase to interactively edit commits

     $ git rebase -i HEAD~3
  6. Push

     $ git push origin feature/add-readme

    to set upstream for feature pushes do

     $ git push -u origin feature/add-readme

Usefull commands

  • stash/unstash

      $ git stash
      $ git stash pop
  • undo last commit

      $ git reset --soft HEAD~1
  • reset local to remote branch

      $ git fetch origin
      $ git reset --hard origin/branch
  • rename local branch

      $ git branch -m <oldname> <newname>
  • push with tags

      $ git push --follow-tags origin master
  • push to another branch

      $ git push origin develop:feature/FR2019_spin_off
  • remove remote branch

      $ git push origin --delete <branch_name>
  • squash two last commits

      $ git reset --soft HEAD^
      $ git commit --amend
  • fix last commit with editing commit message

      $ git commit --amend --no-edit
  • editing previous commits

      $ git rebase -i HEAD~3                   # Three commit before
      $ git rebase --interactive 'bbc643cd^'   # Or starting from given hash
      $ git commit --all --amend --no-edit
      $ git rebase --continue
  • change the author of the commit

      $ git commit --amend --author="New Me <>"
  • edit first commit

      $ git rebase -i --root
  • move recent commits to new branch

      $ git branch new_branch
      $ git reset --hard HEAD~3
      $ git checkout new_branch
  • move recent commits to existing branch

      $ git checkout feature
      $ git merge master
      $ git checkout master
      $ git reset --hard HEAD~1
  • pull without checkout

      $ git fetch origin master:master
  • prune / clean-up

      $ git remote prune origin
      $ git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -D

Additional info