Git Cheat Sheet

GITOverview

Branch & Merge

When you first setup Git, set up your user name and email address so your first commits
record them properly.

Working with Git branches and the stash.

git config --global user.name "My Name"
git config --global user.email "user@email.com"

git branch

list your branches. a * will appear next to thecurrently active branch

Git is a free and open source, distributed version control system designed to handle
everything from small to very large projects with speed and efficiency.

git branch [branch-name]create a new branch at the current commit

GitHub is the best way to collaborate around your code. Fork, send pull requests, andmanage all your public and private git repositories.

git checkout [branch]switch to another branch and check it out into
your working directory

Heroku is a cloud application platform that supports a number of different programming
languages including Java, Ruby, Node.js, and Clojure—it's a new way of building anddeploying web apps.

git checkout -b [branch]create a branch and immediately switch to it

Basic Git Workflow Examplegit merge [branch]merge another branch into your currently
active one and record the merge as a commit

git logshow commit logs

git stash

stash away the currently uncommitted
modifications
in your working directory temporarily

git stash apply

re-apply the last stashed changes

About Git, GitHub and Heroku.

Initialize a new git repository, then stage all the files in the directory and finally commit theinitial snapshot.
$ git init
$ git add .
$ git commit -m 'initial commit'

Create a new branch named featureA, then check it out so it is the active branch. then edit
and stage some files and finally commit the new snapshot.
$ git branch featureA$ git checkout featureA$ (edit files)$ git add (files)$ git commit -m 'add feature A'

Share & Update
Fetching, merging and working with updates from another repository.

Switch back to the master branch, reverting the featureA changes you just made, then edit
some files and commit your new changes directly in the master branch context.

git remote add [alias] [url]add a git URL as an alias

git fetch [alias]

fetch down all the branches from that Git
remotegit merge [alias]/[branch]merge a branch on the server into yourcurrently active branch to bring it up to date

git push [alias] [branch]push the work on your branch to update thatbranch on the remote git repository

set a config value globally for this user

git pullfetch from the URL tracked by the current
branch and immediately try to merge in the
tracked branch

git init

initialize an existing directory as a
Git repository

Inspect & Compare

git clone [url]clone a Git repository from a URL

git help [command]

get help on any Git command$ git checkout master$ (edit files)$ git commit -a -m 'change files'

Merge the featureA changes into the master branch context, combining all your work.
Finally delete the featureA branch.
$ git merge featureA$ git branch -d featureA

Setup & Init
Git configuration, and repository initialization and cloning.
git config [key] [value]

git config --global [key][value]set a config value in this repository

Stage & Snapshot
Working with snapshots and the Git staging area.

Examining logs, diffs and object information.
git logshow the commit history for the currently
active branch

git log branchB..branchAshow the commits on branchA that are noton branchB

git statusshow the status of what is staged for your next commit and what
is modified in your working directory

git add [file]

add a file as it looks now to your next commit (stage)

git log --follow [file]show the commits that changed file, evenacross renames

git reset [file]

reset the staging area for a file so the change is not in your next
commit (unstage)

git diff

git diff branchB...branchAdiff of what is changed but not staged

show the diff of what is in branchA that is
not in branchB

git diff --staged

diff of what is staged but not yet committed

git commit

commit your staged content as a new commit snapshot

git show [SHA]

show any object in Git in human-readable
formatgit rm [file]remove a file from your working directory and unstage

git gui

tcl/tk GUI program to make all of these commands simpler

gitx

tcl/tk program to show the commit log ina GUI

http://developer.salesforce.com

Contributing on GitHub

Deploying to Heroku with Git

To contribute to a project hosted on GitHub you can fork the project on github.com,
then clone your fork locally, make a change, push back to GitHub, and then send a pull
request, which will email the maintainer.

Use the heroku command-line tool to create an application and git remote:fork project on github$ git clone https://github.com/my-user/project$ cd project$ (edit files)$ git add (files)[Creating glowing-dusk-965... done, stack is bamboo-mri-1.9.2
http://glowing-dusk-965.heroku.com/ <http://glowing-dusk-965.
heroku.com/> | git@heroku.com:glowing-dusk-965.git <x-msg://536/
git@heroku.com:glowing-dusk-965.git> Git remote heroku added]

Use git to deploy the application.

$ git commit -m 'Explain what I changed'$ git push origin mastergo to github and click ‘pull request’ button$ heroku create$ git push heroku master

Create an additional Heroku app for staging, and name the git remote "staging".
$ heroku create my-staging-app --remote staging

Use git to deploy the application via the staging remote.
$ git push staging master

http://heroku.com

For other cheatsheets: http://developer.force.com/cheatsheets

11182013