Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
124 lines (76 sloc) 4.26 KB

#Your first Git cheatsheet ##Fork it, improve it and send me a pull request

Before you start, install git and configure ssh keys on your machine and connect to Github. Follow these simple tutorials to generate ssh, [Part 1] ( and [Part 2] (

If you're interested in the concepts behind basic git use, try this class. Then come back here.

###Make an existing directory on your local machine a git repo: git init (ie: initialize the folder I'm currently working in as a git repository)

###Make a new repo out of thin air: git init PROJECT_DIR_NAME_HERE This makes the directory and initializes it as a git repo.

###Connect your local repository to the remote on Github Make the repo in github and grab the ssh address

git remote add NAME_THE_REMOTE_HOST

An example:

git remote add origin

For more on the "origin" remote, [read this] (

###Take a snapshot of your changed files with "commit": Create new files in your local repository folder

git status

(tells you what files have changed)

git add FILENAME

(stages individual files to be committed or git add . to stage them all)

git commit –m "COMMIT MESSAGE"

After you've added the file to staging once, you can do both of these commands in one:

git commit -am "NEW COMMIT MESSAGE"

###Send your committed file changes to the remote host at Github by pushing: git push –u NAME_THE_REMOTE_HOST BRANCH_TO_COMMIT Like so:

git push –u origin master

###Grab and merge changes from the remote host to your local repo: Git pull NAME_THE_REMOTE_HOST BRANCH_TO_COMMIT Looks like this:

git pull origin master 

(or simply git pull)

Alternatively, you can fetch the changes and merge them in manually, which some users suggest to avoid potentially painful merges.

git fetch origin
git merge origin/master

###Clone an existing repo from Github to your local machine: git clone REPO_ADDRESS Like this:

git clone

###Branching git branch Shows you all the branch names and which one you are working on

git branch BRANCHNAME

Creates new branch. Name can be whatever you want

git checkout BRANCHNAME

Switches to branch

Note: when you want to push changes from your branch, you would use

git push origin BRANCHNAME

###Merging back to master Switch back to master branch

git checkout master

Merge your branch to master

git merge BRANCHNAME

Push merges to Github

git push origin master

##Great resources for further reading

##Cheats from the experts From [Matt Terenzio] (, "for a complete fresh start,"

git fetch --all git reset --hard origin/master

Always fetch and merge instead of pulling. "Takes a little more time, but prevents many headaches," from [Al Shaw] (

Resolve merge conflicts with this, "cause that’s what you want 99% of the time," from Al Shaw. More on this technique here.

git checkout --(ours|theirs).

From [Jeff Larson] (, this command pops open a GUI (in OS X) to help resolve merge conflicts:

git mergetool

This handy command tells you who made the changes to each file in a commit. This [and a bunch more] ( are from Sunlight Foundation.

git blame