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 --get core.editor
git config --global core.editor vi
git config --global user.email your-email

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

-- This will list what branch  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”

git add -A - stages All
git add .    - stages new and modified, without deleted

git add -u  - stages modified and deleted, without new

Git reset
https://davidzych.com/difference-between-git-reset-soft-mixed-and-hard/
Reset committed file:
git reset file

Undo add
git reset

Undo last commit
git reset --soft HEAD~

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

Patch
git format-patch master --stdout > a.patch
git apply --stat a.patch
git apply --check a.patch

No one shall rebase a shared branch

stash
- We can stash change and apply it in another branch
git stash
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

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

Github
Searching - link
in:path, in:file
path:sub-project/sub-folder
filename:the-name
repo:org/repo-name

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

Post a Comment

Labels

Java (159) Lucene-Solr (111) Interview (61) All (58) J2SE (53) Algorithm (45) Soft Skills (37) Eclipse (33) Code Example (31) Linux (24) JavaScript (23) Spring (22) Windows (22) Web Development (20) Nutch2 (18) Tools (18) Bugs (17) Debug (16) Defects (14) Text Mining (14) J2EE (13) Network (13) Troubleshooting (13) PowerShell (11) Chrome (9) Design (9) How to (9) Learning code (9) Performance (9) Problem Solving (9) UIMA (9) html (9) Http Client (8) Maven (8) Security (8) bat (8) blogger (8) Big Data (7) Continuous Integration (7) Google (7) Guava (7) JSON (7) ANT (6) Coding Skills (6) Database (6) Scala (6) Shell (6) css (6) Algorithm Series (5) Cache (5) Dynamic Languages (5) IDE (5) Lesson Learned (5) Programmer Skills (5) System Design (5) Tips (5) adsense (5) xml (5) AIX (4) Code Quality (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Spark (4) Testing (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Become a Better You (3) Concurrency (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (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) Distributed (2) Fiddler (2) Firefox (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Life (2) Logging (2) Python (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) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Mac (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) Review (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