Git Cheat Sheet
GIT BASICSREWRITING GIT HISTORY

git init

Create empty Git repo in specified directory. Run with noarguments to initialize the current directory as a git repository.

git commit

Replace the last commit with the staged changes and last commit
combined. Use with nothing staged to edit the last commit’s message.

git clone <repo>

Clone repo located at <repo> onto local machine. Original repo can belocated on the local filesystem or on a remote machine via HTTP or SSH.

git rebase <base>Rebase the current branch onto <base>. <base> can be a commit ID,branch name, a tag, or a relative reference to HEAD.

git config

Define author name to be used for all commits in current repo. Devs
commonly use --global flag to set config options for current user.

git reflog

Show a log of changes to the local repository’s HEAD.
Add --relative-date flag to show date info or --all to show all refs.

git add

Stage all changes in <directory> for the next commit.
Replace <directory> with a <file> to change a specific file.

GIT BRANCHES

git commit -m"<message>"Commit the staged snapshot, but instead of launchinga text editor, use <message> as the commit message.

git branch

git status

List which files are staged, unstaged, and untracked.

git checkout -b<branch>

Create and check out a new branch named <branch>.
Drop the -b flag to checkout an existing branch.

git log

Display the entire commit history using the default format.
For customization see additional options.

git merge <branch>

Merge <branch> into the current branch.

git diffShow unstaged changes between your index andworking directory.

REMOTE REPOSITORIES<directory>

user.name <name><directory>

List all of the branches in your repo. Add a <branch> argument tocreate a new branch with the name <branch>.

git remote add

Create a new connection to a remote repo. After adding a remote,you can use <name> as a shortcut for <url> in other commands.

git fetch<remote> <branch>

Fetches a specific <branch>, from the repo. Leave off <branch>
to fetch all remote refs.

git pull <remote>Fetch the specified remote’s copy of current branch and
immediately merge it into the local copy.

<name> <url>

UNDOING CHANGES<commit>Create new commit that undoes all of the changes made in<commit>, then apply it to the current branch.

git reset <file>

Remove <file> from the staging area, but leave the working directoryunchanged. This unstages a file without overwriting any changes.

git clean -nShows which files would be removed from working directory.
Use the -f flag in place of the -n flag to execute the clean.

git revert--amendgit push<remote> <branch>

Push the branch to <remote>, along with necessary commits andobjects. Creates named branch in the remote repo if it doesn’t exist.

Visit atlassian.com/git for more information, training, and tutorials

Additional Options +GIT CONFIG

GIT DIFF
git diff HEADShow difference between working directory and last commit.

git diff --cachedShow difference between staged changes and last commit

git config --global

Define the author name to be used for all commits by the current user.

git config --global

Define the author email to be used for all commits by the current user.

GIT RESET

alias. <alias-name>Create shortcut for a Git command. E.g. alias.glog “log --graph--oneline” will set ”git glog” equivalent to ”git log --graph --oneline.

git reset

Reset staging area to match most recent commit,
but leave the working directory unchanged.

git config --system

Set text editor used by commands for all users on the machine. <editor>arg should be the command that launches the desired editor (e.g., vi).

git reset --hardReset staging area and working directory to match most recent
commit and overwrites all changes in the working directory.

git config

Open the global configuration file in a text editor for manual editing.

git reset <commit>

Move the current branch tip backward to <commit>, reset thestaging area to match, but leave the working directory alone.

user.name <name>user.email <email>git config --global<git-command>core.editor <editor>--global --edit

git reset --hard<commit>

GIT LOG
git log -<limit>

Limit number of commits by <limit>.
E.g. ”git log -5” will limit to 5 commits.

git log --oneline

Condense each commit to a single line.

git log -p

Display the full diff of each commit.

git log --stat

Include which files were altered and the relative number oflines that were added or deleted from each of them.

GIT PULL

git log --author=

Search for commits by a particular author.

git pull --rebase

git log

Search for commits with a commit message thatmatches <pattern>.

GIT PUSH

git log<since>..<until>

Show commits that occur between <since> and <until>. Args can be acommit ID, branch name, HEAD, or any other kind of revision reference.

git log -- <file>
git log --graph”<pattern>”--grep=”<pattern>”--decorate

Same as previous, but resets both the staging area & working directory tomatch. Deletes uncommitted changes, and all commits after <commit>.

GIT REBASEInteractively rebase current branch onto <base>. Launches editor to entercommands for how each commit will be transferred to the new base.

git rebase -i<base><remote>Fetch the remote’s copy of current branch and rebases it into the localcopy. Uses git rebase instead of merge to integrate the branches.

--force

Forces the git push even if it results in a non-fast-forward merge. Do not use
the --force flag unless you’re absolutely sure you know what you’re doing.

Only display commits that have the specified file.

git push <remote>Push all of your local branches to the specified remote.

--graph flag draws a text based graph of commits on left side of commit

git push <remote>msgs. --decorate adds names of branches or tags of commits shown.

git push <remote>--all--tagsTags aren’t automatically pushed when you push a branch or use the--all flag. The --tags flag sends all of your local tags to the remote repo.

Visit atlassian.com/git for more information, training, and tutorials