# Terminal Cheat Sheet pwd # print working directory ls # list files in directory cd # change directory ~ # home directory .. # up one directory - # previous working directory help # get help -h # get help --help # get help man # manual cat # output the contents of a file mkdir # create new directory open # open a file with the associated program, a directory with Finder, or a URL with the default web browser ps # list all running processes kill # terminate existing process rmd # permanently delete file rmdir # remove directory # Setup git config --global user.name “[firstname lastname]” #set a name that is identifiable for credit when review version history git config --global user.email “[valid-email]” #set an email address that will be associated with each history marker git config --global color.ui auto #set automatic command line coloring for Git for easy reviewing #set a new remote git remote add github "remote repo addresss".git ## Working with Git ### Quick Start git clone # Clone directory git checkout -b # Create new local branch git push -u origin # Sync local branch with remote git checkout # Checkout branch git push origin # Push branch to remote git branch -d # deletes local branch git push origin : # deletes remote branch git push -f github master # forcefully push git subtree push --prefix docs origin gh-pages # push docs as subtree to gh-pages ### Clone Directory git clone ### 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 ... # 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" 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 # rename branch git branch -m # rename current branch ### Delete Project git branch -d # deletes local branch git push origin : # deletes remote branch git remote prune # update local/remote sync ### Merging Upstream git remote -v # Get list of remote branches git remote add upstream # 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 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 ## Sublime as default text editor cd ~ mkdir bin ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" ~/bin/subl git config --global core.editor "subl -n -w" ### If that's not working sudo rm -rf /usr/local/bin/subl sudo ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /usr/local/bin