Skip to content

Instantly share code, notes, and snippets.

@dgroup
Forked from cferdinandi/terminal-cheat-sheet.txt
Last active April 23, 2017 00:06
Show Gist options
  • Save dgroup/23645a0fd9e1c910b782a2ce23ddb5df to your computer and use it in GitHub Desktop.
Save dgroup/23645a0fd9e1c910b782a2ce23ddb5df to your computer and use it in GitHub Desktop.
git-cheatsheet
  ### Quick Start

  git clone <url>                 # Clone directory
  git checkout -b <new-branch>    # Create new local branch
  git push -u origin <new-branch> # Sync local branch with remote
  git checkout <branch>           # Checkout branch
  git push origin <branch>        # Push branch to remote

  git branch -d <branchname>   	  # deletes local branch
  git push origin :<branchname>	  # deletes remote branch

  git subtree push --prefix docs origin gh-pages  # push docs as subtree to gh-pages



  ### Clone Directory
  git clone <url>



  ### Create Project
  cd project/
  git init                    # initializes the repository
  git add .                   # add those 'unknown' files
  git commit                  # commit all changes, edit changelog entry
  git rm --cached <file>...   # ridiculously complicated command to undo, in case you forgot .gitignore



  ### Branching and Merging
  git branch                          # show list of all branches (* is active)
  git checkout -b linux-work          # create a new branch named "linux-work"
  <make changes>
  git commit -a
  git checkout master                 # go back to master branch
  git merge linux-work                # merge changesets from linux-work (Git >= 1.5)
  git pull . linux-work               # merge changesets from linux-work (all Git versions)
  git branch -m <oldname> <newname>   # rename branch
  git branch -m <newname>             # rename current branch



  ### Delete Project
  git branch -d <branchname>   	# deletes local branch
  git push origin :<branchname>	# deletes remote branch
  git remote prune <branchname>	# update local/remote sync



  ### Merging Upstream

  git remote -v 									# Get list of remote branches
  git remote add upstream <upstream github url>	# Add original as upstream
  git remote -v 									# Check upstream

  git fetch upstream 								# Get original repo
  git checkout development						# Switch to main branch in local fork
  git merge upstream/development					# Merge original with fork

  git diff --name-only | uniq | xargs subl		# Fix conflicts in Sublime Text



  ### Importing Patches
  git apply < ../p/foo.patch
  git commit -a



  ### Exporting Patches
  <make changes>
  git commit -a -m "commit message"
  git format-patch HEAD^  # creates 0001-commit-message.txt
                          # (HEAD^ means every patch since one revision before the
                          # tip of the branch, also known as HEAD)




  ### Inspecting Revisions

  # inspect history visually
  gitk    # this opens a Tk window, and shows you how the revisions are connected

  # inspect history
  git log     # this pipes a log of the current branch into your PAGER
  git log -p  # ditto, but append a patch after each commit message

  # inspect a specific commit
  git show HEAD   # show commit info, diffstat and patch
                  # of the tip of the current branch



  ### Referring to Revisions

  # by name
  git log v1.0.0  # show history leading up to tag "v1.0.0"
  git log master  # show history of branch "master"

  # relative to a name
  git show master^    # show parent to last revision of master
  git show master~2   # show grand parent to tip of master
  git show master~3   # show great grand parent to tip of master (you get the idea)

  # by output of "git describe"
  git show v1.4.4-g730996f    # you get this string by calling "git describe"

  # by hash (internally, all objects are identified by a hash)
  git show f665776185ad074b236c00751d666da7d1977dbe
  git show f665776    # a unique prefix is sufficient

  # tag a revision
  git tag v1.0.0                      # make current HEAD known as "v1.0.0"
  git tag interesting v1.4.4-g730996f # tag a specific revision (not HEAD)



  ### Comparing Revisions
  # diff between two branches
  git diff origin..master             # pipes a diff into PAGER
  git diff origin..master > my.patch  # pipes a diff into my.patch

  # get diffstat of uncommitted work
  git diff --stat HEAD

 
 
  ### Reporting
  git rev-parse --abbrev-ref HEAD                       # branch name
  git --no-pager show -s --format='%an'                 # commit author
  git rev-parse --verify HEAD                           # commit SHA
  git log -1 --pretty=%B|awk '{print substr($0,0,80)}'  # commit message (limit 80 symbols
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment