User Tools

Site Tools


linux:git

Git - Cheat Sheet

Configure

 git config --global user.name "[name]"
     Sets the name you want attached to your commit transactions
     
 git config --global user.email "[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

 .gitignore
     *.log
     build/
     temp-*
     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

Tags

 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