git-tips
Collection of
git-tips, want to add your tips? Checkout contributing.md
- Everyday Git in twenty commands or so
- Show helpful guides that come with Git
- Overwrite pull
- List of all files till a commit
- Git reset first commit
- List all the conflicted files
- List of all files changed in a commit
- Unstaged changes since last commit
- Changes staged for commit
- Show both staged and unstaged changes
- List all branches that are already merged into master
- Quickly switch to the previous branch
- Remove branches that have already been merged with master
- List all branches and their upstreams, as well as last commit on branch
- Track upstream branch
- Delete local branch
- Delete remote branch
- Undo local changes with the last content in head
- Revert: Undo a commit by creating a new commit
- Reset: Discard commits, advised for private branch
- Reword the previous commit message
- Amend author.
- Reset author, after author has been changed in the global config.
- Changing a remote's URL
- Get list of all remote references
- Get list of all local and remote branches
- Get only remote branches
- Stage parts of a changed file, instead of the entire file
- Get git bash completion
- What changed since two weeks?
- See all commits made since forking from master
- Pick commits across branches using cherry-pick
- Find out branches containing commit-hash
- Git Aliases
- Saving current state of tracked files without commiting
- Saving current state including untracked files
- Show list of all saved stashes
- Apply any stash without deleting from the stashed list
- Apply last stashed state and delete it from stashed list
- Delete all stored stashes
- Show all tracked files
- Show all untracked files
- Show all ignored files
- Create new working tree from a repository (git 2.5)
- Create new working tree from HEAD state
- Before deleting untracked files/directory, do a dry run to get the list of these files/directories
- Forcefully remove untracked files
- Forcefully remove untracked directory
- Update all the submodules
- Show all commits in the current branch yet to be merged to master
- Rename a branch
- rebases 'feature' to 'master' and merges it in to master
- Archive the
masterbranch - Modify previous commit without modifying the commit message
- Prunes branches that have been deleted in the remote.
- Retrieve the commit hash of the initial revision.
- Visualize the version tree.
- Deploying git tracked subfolder to gh-pages
- Adding a project to repo using subtree
- Get latest changes in your repo for a linked project using subtree
- Export a branch with history to the a file.
- Import from a bundle
- Get the name of current branch.
- Ignore one file on commit (e.g. Changelog).
- Stash changes before rebasing
- Fetch pull request by ID to a local branch
- Show the most recent tag on the current branch.
- Show inline word diff.
- Don’t consider changes for tracked file.
- Undo assume-unchanged.
- Clean the files from
.gitignore. - Restore deleted file.
- Always rebase instead of merge on pull.
- List all the alias and configs.
Everyday Git in twenty commands or so
git help everydayShow helpful guides that come with Git
git help -gOverwrite pull
git fetch --all && git reset --hard origin/masterList of all files till a commit
git ls-tree --name-only -r <commit-ish>Git reset first commit
git update-ref -d HEADList all the conflicted files
git diff --name-only --diff-filter=UList of all files changed in a commit
git diff-tree --no-commit-id --name-only -r <commit-ish>Unstaged changes since last commit
git diffChanges staged for commit
git diff --cachedShow both staged and unstaged changes
git diff HEADList all branches that are already merged into master
git checkout master && git branch --mergedQuickly switch to the previous branch
git checkout -Remove branches that have already been merged with master
git branch --merged | grep -v '\*' | xargs -n 1 git branch -dList all branches and their upstreams, as well as last commit on branch
git branch -vvTrack upstream branch
git branch -u origin/mybranchDelete local branch
git branch -d <local_branchname>Delete remote branch
git push origin --delete <remote_branchname>Alternatives:
git push origin :<remote_branchname>Undo local changes with the last content in head
git checkout -- <file_name>Revert: Undo a commit by creating a new commit
git revert <commit-ish>Reset: Discard commits, advised for private branch
git reset <commit-ish>Reword the previous commit message
git commit -v --amendAmend author.
git commit --amend --author='Author Name <email@address.com>'Reset author, after author has been changed in the global config.
git commit --amend --reset-author --no-editChanging a remote's URL
git remote set-url origin <URL>Get list of all remote references
git remoteAlternatives:
git remote showGet list of all local and remote branches
git branch -aGet only remote branches
git branch -rStage parts of a changed file, instead of the entire file
git add -pGet git bash completion
curl http://git.io/vfhol > ~/.git-completion.bash && echo '[ -f ~/.git-completion.bash ] && . ~/.git-completion.bash' >> ~/.bashrcWhat changed since two weeks?
git whatchanged --since='2 weeks ago'See all commits made since forking from master
git log --no-merges --stat --reverse master..Pick commits across branches using cherry-pick
git checkout <branch-name> && cherry-pick <commit-ish>Find out branches containing commit-hash
git branch -a --contains <commit-ish>Alternatives:
git branch --contains <commit-ish>Git Aliases
git config --global alias.<handle> <command>
git config --global alias.st statusSaving current state of tracked files without commiting
git stashAlternatives:
git stash saveSaving current state including untracked files
git stash save -uAlternatives:
git stash save --include-untrackedShow list of all saved stashes
git stash listApply any stash without deleting from the stashed list
git stash apply <stash@{n}>Apply last stashed state and delete it from stashed list
git stash popAlternatives:
git stash apply stash@{0} && git stash drop stash@{0}Delete all stored stashes
git stash clearAlternatives:
git stash drop <stash@{n}>Show all tracked files
git ls-files -tShow all untracked files
git ls-files --othersShow all ignored files
git ls-files --others -i --exclude-standardCreate new working tree from a repository (git 2.5)
git worktree add -b <branch-name> <path> <start-point>Create new working tree from HEAD state
git worktree add --detach <path> HEADBefore deleting untracked files/directory, do a dry run to get the list of these files/directories
git clean -nForcefully remove untracked files
git clean -fForcefully remove untracked directory
git clean -f -dAlternatives:
git clean -dfUpdate all the submodules
git submodule foreach git pullShow all commits in the current branch yet to be merged to master
git cherry -v masterAlternatives:
git cherry -v master <branch-to-be-merged>Rename a branch
git branch -m <new-branch-name>Alternatives:
git branch -m [<old-branch-name>] <new-branch-name>rebases 'feature' to 'master' and merges it in to master
git checkout feature && git rebase @{-1} && git checkout @{-2} && git merge @{-1}Archive the master branch
git archive master --format=zip --output=master.zipModify previous commit without modifying the commit message
git add --all && git commit --amend --no-editPrunes branches that have been deleted in the remote.
git fetch -pAlternatives:
git remote prune originRetrieve the commit hash of the initial revision.
git rev-list --reverse HEAD | head -1Visualize the version tree.
git log --pretty=oneline --graph --decorate --allAlternatives:
gitk --allDeploying git tracked subfolder to gh-pages
git subtree push --prefix subfolder_name origin gh-pagesAdding a project to repo using subtree
git subtree add --prefix=<directory_name>/<project_name> --squash git@github.com:<username>/<project_name>.git masterGet latest changes in your repo for a linked project using subtree
git subtree pull --prefix=<directory_name>/<project_name> --squash git@github.com:<username>/<project_name>.git masterExport a branch with history to the a file.
git bundle create <file> <branch-name>Import from a bundle
git clone repo.bundle <repo-dir> -b <branch-name>Get the name of current branch.
git rev-parse --abbrev-ref HEADIgnore one file on commit (e.g. Changelog).
git update-index --assume-unchanged Changelog; git commit -a; git update-index --no-assume-unchanged ChangelogStash changes before rebasing
git rebase --autostashFetch pull request by ID to a local branch
git fetch origin pull/<id>/head:<branch-name>Alternatives:
git pull origin pull/<id>/head:<branch-name>Show the most recent tag on the current branch.
git describe --tags --abbrev=0Show inline word diff.
git diff --word-diffDon’t consider changes for tracked file.
git update-index --assume-unchanged <file_name>Undo assume-unchanged.
git update-index --no-assume-unchanged <file_name>Clean the files from .gitignore.
git clean -X -fRestore deleted file.
git checkout <deleting_commit>^ -- <file_path>Always rebase instead of merge on pull.
git config --global branch.autosetuprebase alwaysList all the alias and configs.
git config --list