User Tools

Site Tools


git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
git [2017/01/19 12:25]
frank created
git [2017/08/31 15:23] (current)
frank
Line 1: Line 1:
 === Contribute to github === === Contribute to github ===
   - configure local git<​code>​   - configure local git<​code>​
- $ git config --global user.name "frdeng+ $ git config --list 
- $ git config --global user.email "frank.deng@oracle.com"+ $ git config --global user.name "San Zhang
 + $ git config --global user.email "san.zhang@example.com" 
 +// global config file is ~/​.gitconfig
 </​code>​ </​code>​
   - fork a repo on github.com   - fork a repo on github.com
Line 11: Line 13:
   - add upstream to your repo<​code>​   - add upstream to your repo<​code>​
  $ git remote add upstream https://​github.com/​boxcutter/​oraclelinux.git  $ git remote add upstream https://​github.com/​boxcutter/​oraclelinux.git
 + $ git remote -v
 </​code>​ </​code>​
   - fetch upstream<​code>​   - fetch upstream<​code>​
Line 32: Line 35:
 </​code>​ </​code>​
   - create new pull request on github.com   - create new pull request on github.com
 +  - Once PR is accepted, the fix is merged to upstream, then sync up with upstream. Fetch upstream, and rebase upstream, then push to own forked repo(origin><​code>​
 +$ git checkout master
 +$ git fetch upstream
 +$ git rebase upstream/​master
 +$ git push origin master
 +</​code>​
  
 +=== git configuration ===
 +<​code>​
 + $ git config --list
 + $ git config [--global] -e
 + $ git config [--global] user.name "San Zhang"
 + $ git config [--global] user.email "​san.zhang@example.com"​
 +// global config file is ~/​.gitconfig
 +
 +</​code>​
 +
 +=== branch and tag ===
 +<​code>​
 + # list tags
 + $ git tag -n
 + # list local branches
 + $ git branch
 + # list remote branches
 + $ git branch -r
 + # list local and remote branches
 + $ git branch -a
 + # create a new branch, but do not switch to the branch
 + $ git branch [branch]
 + # create a branch and switch to it
 + $ git checkout -b [branch] ​
 + # create a new branch and track remote branch
 + $ git branch --track [branch] [remote-branch]
 + $ git checkout -b [branch] --track [remote-branch] ​ or git checkout -b [branch] [remote-branch] //tracking is by default
 + # track current branch to remote branch
 + $ git branch --set-upstream-to ​ [remote-branch]
 + # track a branch to remote branch
 + $ git branch --set-upstream-to [remote-branch] [branch]
 + # merge a branch to current branch
 + $ git merge [branch] ​
 + # pick a commit and merge to current branch
 + $ git cherry-pick [commit]
 + # delete a branch
 + $ git branch -d [branch]
 + # delete a remote branch
 + $ git push origin --delete [branch] or git branch -dr [remote/​branch]
 +
 + # list tags
 + $ git tag
 + # create a tag at current commit
 + $ git tag [tag]
 + # create a tag at specific commit
 + $ git tag [tag] [commit]
 + # delete local branch
 + $ git tag -d [tag]
 + # push specific tag
 + $ git push [remote] [tag]
 + # push all tags
 + $ git push [remote] --tags
 + # create a new branch from a tag
 + $ git checkout -b [branch] [tag]
 +</​code>​
 +
 +=== add/remove file ===
 +<​code>​
 + $ git add [file1] [file2] ... [-p]
 + $ git add . //add all files to cache
 + $ git rm [file1] [file2] ...
 + $ git rm --cached [file1] //remove from cache but remain in working area
 + $ git mv [filename] [new filename]
 +</​code>​
 +
 +=== commit ===
 +<​code>​
 + $ git commit -m "​message"​
 + $ git commit [file1] [file2] ... -m "​message"​
 + $ git commit -a //commit all
 + $ git commit -v //show diff info
 +# show one specific commit
 +$ git show [commit]
 +# show the affected files in the commit
 +$ git show --name-only [commit]
 +# display the file content at the cmmit
 +$ git show [commit]:​[filename]
 +
 +</​code>​
 +
 +=== get diff ===
 +<​code>​
 +# display diff between working area and cache
 +$ git diff
 +# display diff between cache and last commit
 +$ git diff --cached [file]
 +# display diff between work and latest commit
 +$ git diff HEAD
 +# display diff between two branches
 +$ git diff [branch1]...[branch2]
 +# display diff on specific directory between two branches ​
 +$ git diff release-3.1..master -- version/
 +diff --git a/​version/​version.go b/​version/​version.go
 +index 6cb3c08..9134ceb 100644
 +--- a/​version/​version.go
 ++++ b/​version/​version.go
 +@@ -26,7 +26,7 @@ import (
 + var (
 +        // MinClusterVersion is the min cluster version this etcd binary is compatible with.
 +        MinClusterVersion = "​3.0.0"​
 +-       ​Version ​          = "​3.1.0+git"​
 ++       ​Version ​          = "​3.2.0+git"​
 +        APIVersion ​       = "​unknown"​
 + 
 +        // Git SHA Value will be set during build
 +
 +</​code>​
 +
 +=== get information ===
 +<​code>​
 +# display changes
 +$ git status
 +# display current branch version history
 +$ git log
 +# display current branch commit history including affected files
 +$ git log --stat
 +# search from log by keyword
 +$ git log -S [keyword]
 +# display all changes after some specific commit, show each commit in one line
 +$ git log [tag ] HEAD --pretty=format:​%s
 +# display all changes after some specific commit, and search keyword
 +$ git log [tag] HEAD --grep [keyword]
 +# display one specific file history, including file name
 +$ git log --follow [file] or git whatchanged [file]
 +# display each diff of a file
 +$ git log -p [file]
 +# display last 5 commits
 +$ git log -5 --pretty --oneline
 +# display all users that have commits, sort by # of commits
 +$ git shortlog -sn
 +# display the specific file when and who has changed
 +$ git blame [file]
 +
 +# reference log
 +$ git reflog
 +</​code>​
 +
 +=== remote ===
 +<​code>​
 +# download all changes
 +$ git fetch [remote]
 +# show remote
 +$ git remote -v
 +# add a new remote git repo and name it
 +$ git remote add [shortname] [url]
 +# pull all remote changes and merge to local branch
 +$ git pull [remote] [branch]
 +# upload local branch to remote
 +$ git push [remote] [branch]
 +# force to push current branch to remote
 +$ git push [remote] --force
 +# push all branches to remote
 +$ git push [remote] --all
 +</​code>​
git.1484857535.txt.gz · Last modified: 2017/01/19 12:25 by frank