User Tools

Site Tools


Git - Cheat Sheet


 git config --global "[name]"
     Sets the name you want attached to your commit transactions
 git config --global "[email address]"
     Sets the email you want attached to your commit transactions
 git config --global color.ui auto
     Enables helpful colorization of command line output
 git config --global push.default current
     Update a branch with the same name as current branch if no refspec is given
 git config --global core.editor [editor]
     Which editor to use when commit and tag that lets you edit messages
 git config --global diff.tool [tool]
     Specify which command to invoke as the specified tool for git difftool

Create repositories

 git init [project-name]
     Creates a new local repository with the specified name
 git clone [url]
     Downloads a project nd its entire version history

Make changes

 git status
     Lists all new or modified files to be committed
 git status -s
     Short view of status
 git diff
     Shows file differences not yet staged
 git add [file]
     Snapshots the file in preparation for versioning
 git add .
     Add all modified files to be commited
 git add '*.txt'
     Add only certain files
 git add --patch filename.x (or -p for short)
     Snapshot only chunks of a file
 git rm [file]
     Tell git not to track the file anymore
 git diff --staged
     Show what has been added to the index via git add but not yet committed
 git diff HEAD
     Shows what has changed since the last commit.
 git diff HEAD^
     Shows what has changed since the commit before the latest commit
 git diff [branch]
     Compare current branch to some other branch
 git difftool -d
     Same as diff, but opens changes via difftool that you have configured
 git difftool -d master..
     See only changes made in the current branch
 git diff --no-commit-id --name-only --no-merges origin/master…
     See only the file names that has changed in current branch
 git diff --stat
     See statistics on what files have changed and how
 git reset [file]
     Unstages the file, but preserves its contents
 git commit
     Record changes to git. Default editor will open for a commit message
 git commit -m "[descriptive message]"
     Records file snapshots permanently in version history
 git commit --amend
     Changing the history, of the HEAD commit
 git checkout -- .
     Revert changes in current directory
 git reset --hard
     Revert changes to modified files.
 git clean -fd
     Remove all untracked files and directories.

Group changes

 git branch
     Lists all local branches in the current directory
 git branch [branch-name]
     Create a new branch
 git checkout [branch-name]
     Switches to the specified branch and updates the working directory
 git checkout -b <name> <remote>/<branch>
     Switches to a remote branch
 git checkout [filename]
     Return file to it's previous version, if it hasn’t been staged yet
 git merge [branch]
     Combines the specified branch's history into the current branch
 git merge --no--ff [branch]
     Merge branch without fast forwarding
 git branch -a
     See the full list of local and remote branches
 git branch -d [branch]
     Deletes the specified branch
 git branch -D [branch]
     Hard branch delete, will not complain
 git branch -m <oldname> <newname>
     Rename a branch
 git branch --merged master | grep -v 'master$' | xargs git branch -d
     Delete all local branches that are already merged into master

Refactor filenames

 git rm [file]
     Deletes the file from the working directory and stages the deletion
 git rm --cached [file]
     Removes the file from version control but preserves the file locally
 git mv [file-original] [file-renamed]
     Changes the file name and prepares it for commit

Suppress tracking

     A text file named .gitignore suppresses accidental versioning of files and paths matching the specified patterns
 git ls-files --other --ignored --exclude-standard
     Lists all ignored files in this project

Save fragments

 git stash
     Temporarily stores all modified tracked files
 git stash pop
     Restores the most recently stashed files
 git stash list
     Lists all stashed changesets
 git stash drop
     Discards the most recently stashed changeset


 git tag
     Shows tags
 git show <tag>
     Displays information about tag <tag>
 git tag -a <tag> -m <"Description for the tag">
     Create tag <tag> and add annotation
 git tag -s <tag> -m <"Description for the tag">
     Create GPG signed tag and add annotation
 git tag -d <tag>
     Deletes <tag>
 git push origin --tags
     Publishes tags to the remote server
 git checkout -b version-tag <tag>
     Switched to a new branch 'version-tag'

Review history

 git log
     Lists version history for the current branch
 git log --follow [file]
     Lists version history for a file, including renames
 git log --pretty=format:"%h %s" --graph
     Pretty commit view, you can customize it as much as you want
 git log --author='Name' --after={1.week.ago} --pretty=oneline --abbrev-commit
     See what the author has worked on in the last week
 git log --no-merges master..
     See only changes in this branch
 git diff [file-branch]…[second-branch]
     Shows content differences between two branches
 git show [commit]
     Outputs metadata and content changes of the specified commit
 git tag --contains <hash>
     Shows which tag contains the commit.

Redo commits

 git rev-parse HEAD
     Shows current commit
 git reset
     Unstage pending changes, the changes will still remain on file system
 git reset [commit/tag]
     Undoes all commits after [commit], preserving changes locally
 git reset --hard [commit]
     Discards all history and changes back to the specified commit

Delete the last commit

 git reset HEAD^ --hard
 git push <BRANCH> -f

Delete the second last commit

 git rebase -i dd61ab32^  <----- the bad commit
     This will open an editor and show a list of all commits since the commit we want to get rid of.
     Simply remove the line with the offending commit and save.
     pick dd61ab32
     pick dsadhj278
     Now you are fine, just push:
     git push <BRANCH> -f

Synchronize changes

 git fetch [bookmark]
     Downloads all history from the repository bookmark
 git fetch -p
     Update history of remote branches, you can fetch and purge
 git merge [bookmark]/[branch]
     Combines bookmark's branch into current local branch
 git push
     Push current branch to remote branch
 git push [remote] [branch]
     Manually specify remote and branch to use every time
 git push -u origin master
     If a remote branch is not set up as an upstream, you can make it so
 git pull
     Downloads bookmark history and incorporates changes
 git pull [remote] [branch]
     Specify to pull a specific branch
 git remote
     See list of remote repos available
 git remote -v
     Detailed view of remote repos available
 git remote add [remote] [url]
     Add a new remote
linux/git.txt · Last modified: 2016/08/11 04:06 by abadonna