Git Auto Completion
Help - git help command
Help - git help command
Cache Git Authentication
git config --global credential.helper 'cache --timeout 72000'
git credential-osxkeychain erase
Git Config
git config --global help.autocorrect 1
git config --get core.editor
git config --global core.editor vi
git config --global user.email your-email
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git log -l
Push to a Remote Branch with a Different Name
git push origin local-name:remote-name
Make an existing Git branch track a remote branch
git branch -u upstream/foo foo
Switch to a different remote branch
git branch --all
git checkout remotes/origin/develop
git checkout -b develop
Disable push to remote branch
git remote set-url --push remote-name DISABLE
git branch --unset-upstream
--set-upstream-to=remote-name/branch-name
List what remote branch your current branch is tracking
git branch -vv or just git status
Show only modified files
git status -uno
git status | grep modified:
git ls-files -m
git fetch --dry-run
git fetch -p
-p, --prune After fetching, remove any remote-tracking branches which no longer exist on the remote.
git branch -d[D] the_local_branch
Temporarily ignoring files
git update-index --assume-unchanged file-path
git update-index --no-assume-unchanged file-path
Get a list of files marked --assume-unchanged:
git ls-files -v|grep '^h'
Git Diff
git diff --name-only -- *.java
git diff --cached
Compare files from different branches
git diff branch1:branch2 file-path
git diff ..branch2 file-path
git diff branch2.. file-path
Viewing Unpushed Git Commits
git diff origin/master..HEAD
Change commit message:
git commit --amend -m ”YOUR-NEW-COMMIT-MESSAGE”
Changing the Last Commit
git commit --amend
Skip commit hooks
git commit --no-verify (-n)
Force push without any change
git commit --allow-empty --amend && git push -f
git add -A - stages All
git add . - stages new and modified, without deleted
git add -u - stages modified and deleted, without new
Unmodifying a Modified File
git checkout --..." to discard changes in working directory
Git reset
https://davidzych.com/difference-between-git-reset-soft-mixed-and-hard/
Reset local branch to be same as remote branch
git fetch --all
git reset --hard origin/master
Reset committed file:
git reset file
Undo add
git reset
Undo last commit
git reset --soft HEAD~
git reset --soft HEAD~X(number)
Unstaging a Staged File
use "git reset HEAD..." to unstage
Reset local repository branch to be same as remote repository
git reset --hard origin/master
Squash Last 2 Git Commits
git reset --soft HEAD~2
git commit -m "New message for the combined commit"
Undo last reset
git reset 'HEAD@{1}'
Replace local file with file from remote another branch
git checkout remote/branch -- a/file (seems we can ignore --)
Delete Local Branch:
git branch -D branch-name
Delete remote branch:
git push origin --delete branch-name
git log
git --no-pager log -n 20 --graph --pretty=format:'%Cred%h%Creset %an: %s - %Creset %C(yellow)%d%Creset %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
Filtering
By amount - show last 3 commits only
git log -3
git log --author=abc
git log -S "search-term"
git log file
git log -Ssearch-term -p - show the diff of each commit
Search for the regex in the diff of each commit
git log -G'regx'
git grep -n something
View unpushed commits
git log origin/master..HEAD
git diff origin/master..HEAD
stash
- We can stash change and apply it in another branch
git stash
git stash save "a_name_here"
git stash list
git stash drop stash@{0}
Git commands
Merge code from another remote branch to current local branch
git pull origin remote-branch-name
Merge code from a branch from another remote to current local branch
git pull another-remote remote-branch-name
After git remote add, run git fetch --all to fetch remote branch info/
Find who made the change
Find any commit that added or removed the string
git log -Sthe-query
gitk filePath
Get a file from a specific commit
git show commitHash:/path/to/file - show whole file content in that commit
git show commitHash /path/to/file - show changes only
Track all remote branches
- When there are remote branches on the server that aren't tracked by local branches
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
GUI
sourceTree
Github
Searching - link
in:path, in:file repo:org_name/repo_name
path:sub-project/sub-folder
filename:the-name
extension:yml
repo:org/repo-name
-repo:repo1 -repo:repo2
"extends XYZClass"
Comparing
https://github.com/octo-org/wikimania/compare/master@{2weeks}...master
View/Monitor PRs or issues in one places
https://github.com/pulls
https://github.com/issues
Use split diff view to compare PR and commits
https://github.com/blog/1884-introducing-split-diffs
Compare changes between tags/branches
https://github.com/{username}/{repo}/compare/{older-tag}...{newer-tag}
Ignore Whitespace in pull request
Adding ?w=1 to any diff URL will remove any changes only in whitespace, enabling you to see only that code that has changed.
Shortcuts
press ? to show all shortcuts
Pressing t will bring up a file explorer.
Pressing s will focus the search field for the current repository. Pressing Backspace to delete the “This repository” to search all of GitHub.
Pressing w will bring up the branch selector.
octotree : Chrome extensio to display GitHub code in tree format
https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc?hl=en-US
Expand all "outdated diff" comments in a GitHub pull request
Run in chrome dev console:
elements = document.getElementsByClassName("outdated-diff-comment-container");
for (var i=0; i<elements.length; i++) { elements[i].className += " open"; }
Sort user and organization repositories by star count on the repositories tab and org home page
https://github.com/search?q=user:abc&s=stars&type=Repositories
URL to create a pull request between different two branches
/compare/remote:branch...remote:branch
Close pull request without merging
https://help.github.com/articles/closing-a-pull-request/
Revert Pull Request
Resources
https://git-scm.com/book/en/v2
git config --global credential.helper 'cache --timeout 72000'
git credential-osxkeychain erase
Git Config
git config --global help.autocorrect 1
git config --get core.editor
git config --global core.editor vi
git config --global user.email your-email
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
git log -l
Push to a Remote Branch with a Different Name
git push origin local-name:remote-name
Make an existing Git branch track a remote branch
git branch -u upstream/foo foo
Switch to a different remote branch
git branch --all
git checkout remotes/origin/develop
git checkout -b develop
Disable push to remote branch
git remote set-url --push remote-name DISABLE
git branch --unset-upstream
--set-upstream-to=remote-name/branch-name
List what remote branch your current branch is tracking
git branch -vv or just git status
Show only modified files
git status -uno
git status | grep modified:
git ls-files -m
git fetch --dry-run
git fetch -p
-p, --prune After fetching, remove any remote-tracking branches which no longer exist on the remote.
git branch -d[D] the_local_branch
Temporarily ignoring files
git update-index --assume-unchanged file-path
git update-index --no-assume-unchanged file-path
Get a list of files marked --assume-unchanged:
git ls-files -v|grep '^h'
Git Diff
git diff --name-only -- *.java
git diff --cached
Compare files from different branches
git diff branch1:branch2 file-path
git diff ..branch2 file-path
git diff branch2.. file-path
Viewing Unpushed Git Commits
git diff origin/master..HEAD
Change commit message:
git commit --amend -m ”YOUR-NEW-COMMIT-MESSAGE”
Changing the Last Commit
git commit --amend
Skip commit hooks
git commit --no-verify (-n)
Force push without any change
git commit --allow-empty --amend && git push -f
git add -A - stages All
git add . - stages new and modified, without deleted
git add -u - stages modified and deleted, without new
Unmodifying a Modified File
git checkout --
Git reset
https://davidzych.com/difference-between-git-reset-soft-mixed-and-hard/
Reset local branch to be same as remote branch
git fetch --all
git reset --hard origin/master
Reset committed file:
git reset file
Undo add
git reset
Undo last commit
git reset --soft HEAD~
git reset --soft HEAD~X(number)
Unstaging a Staged File
use "git reset HEAD
Reset local repository branch to be same as remote repository
git reset --hard origin/master
Squash Last 2 Git Commits
git reset --soft HEAD~2
git commit -m "New message for the combined commit"
Undo last reset
git reset 'HEAD@{1}'
Replace local file with file from remote another branch
git checkout remote/branch -- a/file (seems we can ignore --)
Delete Local Branch:
git branch -D branch-name
Delete remote branch:
git push origin --delete branch-name
git log
git --no-pager log -n 20 --graph --pretty=format:'%Cred%h%Creset %an: %s - %Creset %C(yellow)%d%Creset %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
Filtering
By amount - show last 3 commits only
git log -3
git log --author=abc
git log -S "search-term"
git log file
git log -Ssearch-term -p - show the diff of each commit
Search for the regex in the diff of each commit
git log -G'regx'
git grep -n something
Show all of the commits that are in branchA, but aren’t the master
git log master..branchAView unpushed commits
git log origin/master..HEAD
Checkout file from another branch
git checkout branch2 filePath
Checkout file from remote brnach
git checkout origin/master filePath Create a branch from a tag
git checkout -b newbranch theTag
git checkout branch2 filePath
Checkout file from remote brnach
git checkout origin/master filePath Create a branch from a tag
git checkout -b newbranch theTag
Patch
git format-patch master --stdout > a.patch
git apply --stat a.patch
git apply --check a.patch
git apply --reject --whitespace=fix a.patch
No one shall rebase a shared branchgit format-patch master --stdout > a.patch
git apply --stat a.patch
git apply --check a.patch
git apply --reject --whitespace=fix a.patch
stash
- We can stash change and apply it in another branch
git stash
git stash save "a_name_here"
git stash list
git stash drop stash@{0}
Git commands
Merge code from another remote branch to current local branch
git pull origin remote-branch-name
Merge code from a branch from another remote to current local branch
git pull another-remote remote-branch-name
After git remote add, run git fetch --all to fetch remote branch info/
Find who made the change
Find any commit that added or removed the string
git log -Sthe-query
gitk filePath
Get a file from a specific commit
git show commitHash:/path/to/file - show whole file content in that commit
git show commitHash /path/to/file - show changes only
Track all remote branches
- When there are remote branches on the server that aren't tracked by local branches
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
GUI
sourceTree
Searching - link
in:path, in:file repo:org_name/repo_name
path:sub-project/sub-folder
filename:the-name
extension:yml
repo:org/repo-name
-repo:repo1 -repo:repo2
"extends XYZClass"
Comparing
https://github.com/octo-org/wikimania/compare/master@{2weeks}...master
View/Monitor PRs or issues in one places
https://github.com/pulls
https://github.com/issues
Use split diff view to compare PR and commits
https://github.com/blog/1884-introducing-split-diffs
Compare changes between tags/branches
https://github.com/{username}/{repo}/compare/{older-tag}...{newer-tag}
Ignore Whitespace in pull request
Adding ?w=1 to any diff URL will remove any changes only in whitespace, enabling you to see only that code that has changed.
Shortcuts
press ? to show all shortcuts
Pressing t will bring up a file explorer.
Pressing s will focus the search field for the current repository. Pressing Backspace to delete the “This repository” to search all of GitHub.
Pressing w will bring up the branch selector.
octotree : Chrome extensio to display GitHub code in tree format
https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc?hl=en-US
Expand all "outdated diff" comments in a GitHub pull request
Run in chrome dev console:
elements = document.getElementsByClassName("outdated-diff-comment-container");
for (var i=0; i<elements.length; i++) { elements[i].className += " open"; }
Sort user and organization repositories by star count on the repositories tab and org home page
https://github.com/search?q=user:abc&s=stars&type=Repositories
URL to create a pull request between different two branches
/compare/remote:branch...remote:branch
Close pull request without merging
https://help.github.com/articles/closing-a-pull-request/
Revert Pull Request
Resources
https://git-scm.com/book/en/v2