Git Cheat Sheet
Git Cheat Sheet
1. Git configuration
Git config
Get and set configuration variables that control all facets of how Git looks
and operates.
Set the name:
$ git config --global user.name "User name"
Set the email:
$ git config --global user.email "[email protected]"
Set the default editor:
$ git config --global core.editor Vim
Check the setting:
$ git config -list
Git alias
Set up an alias for each command:
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
2. Starting a project
Git init
Create a local repository
$ git init <Repo Name>
Git clone
Make a local copy of the server repository.
$ git clone <remote Url>
3. Local changes
Git add
Add a file to staging (Index) area
$ git add Filename
Add all files of a repo to staging (Index) area
$ git add*
Git commit
Record or snapshots the file permanently in the version history with a
message
$ git commit -m " Commit Message"
4. Track changes
Git diff
Track the changes that have not been staged:
$ git diff
Track the changes that have staged but not committed:
$ git diff --staged
Track the changes after committing a file:
$ git diff HEAD
Track the changes between two commits:
$ git diff <commit1-sha> <commit2-sha>
Git Diff Branches:
$ git diff <branch 1> < branch 2>
Git status
Display the state of the working directory and the staging area.
$ git status
Git show
Shows objects:
$ git show <options> <objects>
5. Commit History
Git log
Display the most recent commits and the status of the head:
$ git log
Display the output as one commit per line:
$ git log –oneline
Displays the files that have been modified:
$ git log –stat
Display the modified files with location:
$ git log -p
Git blame
Display the modification on each line of a file:
$ git blame <file name>
6. Ignoring files
.gitignore
Specify intentionally untracked files that Git should ignore.
Create .gitignore:
$ touch .gitignore
List the ignored files:
$ git ls-files -i --exclude-standard
7. Branching
Git branch
Create branch:
$ git branch <branch name>
List Branch:
$ git branch --list
Delete Branch:
$ git branch -d<branch name>
Delete a remote Branch:
$ git push origin -delete <branch name>
Rename Branch:
$ git branch -m <old branch name><new branch name>
Git checkout
Switch between branches in a repository.
Switch to a particular branch:
$ git checkout <branch name>
Create a new branch and switch to it:
$ git checkout -b <branchname>
Checkout a Remote branch:
$ git checkout <remotebranch>
Git stash
Switch branches without committing the current branch.
Stash current work:
$ git stash
Saving stashes with a message:
$ git stash save "<Stashing Message>"
Check the stored stashes:
$ git stash list
Re-apply the changes that you just stashed
$ git stash apply
Track the stashes and their changes:
$ git stash show
Re-apply the previous commits:
$ git stash pop
Delete a most recent stash from the queue:
$ git stash drop
Delete all the available stashes at once:
$ git stash clear
Stash work on a separate branch:
$ git stash branch <branch name>
Git cherry pic
Apply the changes introduced by some existing commit:
$ git cherry-pick <commit id>
8. Merging
Git merge
Merge the branches:
$ git merge <branch name>
Merge the specified commit to currently active branch:
$ git merge <commit>
Git rebase
Apply a sequence of commits from distinct branches into a final commit.
$ git rebase <branch name>
Continue the rebasing process:
$ git rebase –continue
Abort the rebasing process:
$ git rebase --skip
Git interactive rebase
Allow various operations like edit, rewrite, reorder, and more on existing
commits.
$ git rebase -i
9. Remote
Git remote
Check the configuration of the remote server:
$ git remote -v
Add a remote for the repository:
$ git remote add <short name><remote URL>
Fetch the data from remote server
$ git fetch <Remote>
Remove a remote connection from the repository:
$ git remote rm <destination>
Rename remote server:
$ git remote rename <old name><new name>
Show additional information about a particular remote:
$ git remote show <remote>
Change remote:
$ git remote set-url <remote name><newURL>
Git origin master
Push data to remote server:
$ git push origin master
Pull data from remote server:
$ git pull origin master
Git is the free and open source distributed version control system that's responsible for everything GitHub
related that happens locally on your computer. This cheat sheet features the most important and commonly
used Git commands for easy reference.
Git for All Platforms diff of what is changed but not staged
http://git-scm.com
git diff --staged
set a name that is identifiable for credit when review version history
git config --global user.email “[valid-email]”
BRANCH & MERGE
Isolating work in branches, changing context, and integrating changes
set an email address that will be associated with each history marker
git branch
git config --global color.ui auto
list your branches. a * will appear next to the currently active branch
set automatic command line coloring for Git for easy reviewing
git branch [branch-name]
initialize an existing directory as a Git repository merge the specified branch’s history into the current one
git clone [url] git log
retrieve an entire repository from a hosted location via URL show all commits in the current branch’s history
INSPECT & COMPARE SHARE & UPDATE
Examining logs, diffs and object information Retrieving updates from another repository and updating local repos
show the commit history for the currently active branch add a git URL as an alias
git log branchB..branchA git fetch [alias]
show the commits on branchA that are not on branchB fetch down all the branches from that Git remote
git log --follow [file] git merge [alias]/[branch]
show the commits that changed file, even across renames merge a remote branch into your current branch to bring it up to date
git diff branchB...branchA git push [alias] [branch]
show the diff of what is in branchA that is not in branchB Transmit local branch commits to the remote repository branch
git show [SHA] git pull
show any object in Git in human-readable format fetch and merge any commits from the tracking remote branch
delete the file from project and stage the removal for commit apply any commits of current branch ahead of specified one
change an existing file path and stage the move clear staging area, rewrite working tree from specified commit
show all commit logs with indication of any paths that moved TEMPORARY COMMITS
Temporarily store modified, tracked files in order to change branches
system wide ignore pattern for all local repositories discard the changes from top of stash stack
Education
Teach and learn better, together. GitHub is free for students and teach- [email protected]
ers. Discounts available for other educational uses. education.github.com