Git - Tips and Tricks

Git Auto Completion

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 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

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
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
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..branchA

View unpushed commits
git log origin/master..HEAD
git diff 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 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 branch
- 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


Searching - link
in:path, in:file repo:org_name/repo_name
-repo:repo1 -repo:repo2
"extends XYZClass"


View/Monitor PRs or issues in one places

Use split diff view to compare PR and commits

Compare changes between tags/branches{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.

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

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

URL to create a pull request between different two branches

Close pull request without merging

Revert Pull Request


Post a Comment


Java (161) Lucene-Solr (112) Interview (64) All (58) J2SE (53) Algorithm (45) Soft Skills (39) Eclipse (33) Code Example (31) JavaScript (23) Linux (22) Spring (22) Tools (22) Windows (22) Web Development (20) Nutch2 (18) Bugs (17) Debug (16) Defects (14) Text Mining (14) Troubleshooting (14) J2EE (13) Network (13) Tips (12) PowerShell (11) Chrome (10) Problem Solving (10) Design (9) How to (9) Learning code (9) Performance (9) Security (9) UIMA (9) html (9) Http Client (8) Maven (8) bat (8) blogger (8) Big Data (7) Database (7) Google (7) Guava (7) JSON (7) Shell (7) System Design (7) ANT (6) Coding Skills (6) Lesson Learned (6) Programmer Skills (6) Scala (6) css (6) Algorithm Series (5) Cache (5) Continuous Integration (5) IDE (5) adsense (5) xml (5) AIX (4) Become a Better You (4) Code Quality (4) Concurrency (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Life (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Review (4) Spark (4) Testing (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Distributed (3) Dynamic Languages (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (3) Mac (3) Python (3) Restful Web Service (3) Script (3) regex (3) seo (3) .Net (2) Android Studio (2) Apache (2) Apache Procrun (2) Architecture (2) Batch (2) Bit Operation (2) Build (2) Building Scalable Web Sites (2) C# (2) C/C++ (2) CSV (2) Career (2) Cassandra (2) Fiddler (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Logging (2) Software Issues (2) Storage (2) Text Search (2) xml parser (2) AOP (1) Application Design (1) AspectJ (1) Chrome DevTools (1) Cloud (1) Codility (1) Data Mining (1) Data Structure (1) ExceptionUtils (1) Exif (1) Feature Request (1) FindBugs (1) Firefox (1) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) Invest (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Machine Learning (1) Mobile (1) My Plan for 2010 (1) Netbeans (1) Notes (1) Operating System (1) Perl (1) Problems (1) Product Architecture (1) Programming Life (1) Quality (1) Redhat (1) Redis (1) RxJava (1) Solutions logs (1) Team Management (1) Thread Dump Analyzer (1) Visualization (1) boilerpipe (1) htm (1) ongoing (1) procrun (1) rss (1)

Popular Posts