Git 常用命令(說明)

第一部分 :提交修改

$git add .  /*將當前目錄中所有改動的代碼添加到暫存區*/

$git commit -m "xxxxxx"    /*將代碼提交到本地倉庫*/

$git push [remote-name] [branch-name]
# 推送數據到遠程倉庫
# PS:如果使用checkout --track 命令跟蹤了遠程分支,則可省略成git push

$git reset HEAD [filename]
#將不需要commit的文件移除緩存區

$git checkout --[file name]
# 將暫存區的特定文件替換成未更新的版本(即替換本地的修改)
# 使用git checkout . 可以恢復當前目錄下所有的文件到未修改版本

$git commit -am "xxxxx"
# 直接將所有本地修改提交到本地代碼倉庫(省略了git add 命令)

$git log
#查看當前的所有commit的版本信息
PS:git log --stat 可以查看詳細信息

$git pull [server-name] [branch-name]
#從服務器抓取代碼到本地分支

$git push [server-name] [branch-name]
#將本地分支的更改上傳到遠程分支

 

第二部分: 分支操作

查看branch情況:
$ git branch   /*查看本地branch*/
$ git branch -a  /*查看所有(本地和remote)branch*/
$ git branch -v  /*查看本地branch的最後一次提交信息*/

新建branch:
$ git checkout --track <remote-name/branch-name> /*基於remote branch創建*/
$ git branch <branch-name> /*基於當前代碼創建*/

push branch到服務器:
$ git push remote-name branch-name /*新建的branch push以後纔會存在於server上*/

切換/檢出branch:
$ git checkout <branch-name>

刪除branch:
$ git branch –d <branch-name>  /*刪除本地分支,不能刪除當前分支*/

 

分支的查看:

$git reflog /* 查看分支提交的所有歷史信息*/

 

分支的合併:
$ git merge <branch-name> /*合併branch 上的代碼到當前分支,也可以合併分支中的某個特定版本,(commit的狀態也會合並)*/

合併commit(非線性的好處):
$ git cherry-pick <commit-id > /*合併其他branch上的commit,但是隻合併其他分支上的修改,但是不合並commit的狀態*/

清除對tracked文件的修改:
$ git stash  /*或者 $ git reset --hard */

清除un-tracked文件:
$ git clean –fdx

回退衝突的Merge(留到以後整合):
$ git pull                        
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard

查看分支的合併情況
$git branch  --merged /* 查看已經合併到當前分支情況*/
$git branch  --no-merged /*查看尚未合併到當前分支的分支有哪些*/
             
回退某個版本的commit(針對已經push的commit):
$ git revert <commit-id>  /*回退commit-id版本的提交,會commit回退*/
$ git revert -n <commit-id>  /*爲了驗證版本,回退修改後不commit*/

回退剛剛的commit(沒有push的commit,已經push的會有衝突,慎用! )
$ git reset --soft HEAD^ /*回退一個版本,只修改HEAD標記,不修改文件*/
$ git reset --soft HEAD~5 /*回退最近5次commit,修改HEAD標記,不修改文件*/
$ git reset --hard HEAD^/*回退一個版本,將文件和git object都修改到前一版*/

特殊的分支合併方式(Git rebase)
$git rebase [主分支][特性分支] /*將主幹分支的修改合併到特性分支中,而不保留特性分支的歷史版本*/

 

第三部分:其他命令

git diff:
$ git diff /*比較目錄文件和HEAD版本的差異(即查看修改內容)*/
$ git diff commit-id1..commit-id2 /*比較兩個版本*/

git tag:
$ git tag <tag-name>  /*基於當前代碼創建名爲tag-name的tag*/
$ git tag      /*顯示tag list*/

git mv:
$ git mv <src-path> <dst-path> /*重命名(移動)文件或目錄*/

git fetch:
$ git fetch <remote-name> /*從服務器remote-name下載,但不merge進當前branch,也不影響當前文件內容*/
$ git fetch –all /*從所有remote服務器下載文件*/

查看對android源代碼的修改:
$ repo status
更新android源代碼:
$ repo sync

Android代碼最近的修改:
$ repo forall -c git log --stat --after=‘date +%F --date=“-3 day”’ --all /*最近3天誰修改過android代碼*/

查看android代碼中包含的git project
$ repo list

 

第四部分:Git log 查看版本日誌

 -p 按補丁格式顯示每個更新之間的差異。
 --stat 顯示每次更新的文件修改統計信息。
 --shortstat 只顯示 --stat 中最後的行數修改添加移除統計。
 --name-only 僅在提交信息後顯示已修改的文件清單。
 --name-status 顯示新增、修改、刪除的文件清單。
 --abbrev-commit 僅顯示 SHA-1 的前幾個字符,而非所有的 40 個字符。
 --relative-date 使用較短的相對時間顯示(比如,“2 weeks ago”)。
 --graph 顯示 ASCII 圖形表示的分支合併歷史。
 --pretty 使用其他格式顯示歷史提交信息。可用的選項包括 oneline,short,full,fuller 和 format(後跟指定格式)。
 
 -(n) 僅顯示最近的 n 條提交
 --since, --after 僅顯示指定時間之後的提交。
 --until, --before 僅顯示指定時間之前的提交。
 --author 僅顯示指定作者相關的提交。
 --committer 僅顯示指定提交者相關的提交。
 
$ git log –p -2
 -p 選項展開顯示每次提交的內容差異,用-2 則僅顯示最近的兩次更新
$ git log --stat
 --stat,僅顯示簡要的增改行數統計
$ git log --pretty=oneline
 --pretty 選項,可以指定使用完全不同於默認格式的方式展示提交歷史
 oneline 將每個提交放在一行顯示,這在提交數很大時非常有用
$ git log --pretty=format:"%h - %an, %ar : %s"
 選項 說明
 %H 提交對象(commit)的完整哈希字串
 %h 提交對象的簡短哈希字串
 %T 樹對象(tree)的完整哈希字串
 %t 樹對象的簡短哈希字串
 %P 父對象(parent)的完整哈希字串
 %p 父對象的簡短哈希字串
 %an 作者(author)的名字
 %ae 作者的電子郵件地址
 %ad 作者修訂日期(可以用 -date= 選項定製格式)
 %ar 作者修訂日期,按多久以前的方式顯示
 %cn 提交者(committer)的名字
 %ce 提交者的電子郵件地址
 %cd 提交日期
 %cr 提交日期,按多久以前的方式顯示
 %s 提交說明
$git log --author="chen.jian" --after="2013-10-01" --before="2013-10-10" --shortstat
  查看"chen.jian"在2013-10-01 到 2013-10-10 時間段內的修改,並顯示摘要 

 

第五部分:Git 與Svn 命令對比

Checkout
$ svn checkout <url>
$ git clone <url>

Update
$ svn update
$ git pull [remote-name] [branch-name]

Log
$ svn log
$ git log

Diff current modifications
$ svn diff [<path>]
$ git diff [<path>]

Commit
$ svn commit –m “message”
$ git commit –am “message”

Revert
$ svn revert <filename>
$ git checkout <filename>

Add
$ svn add <file or folder>
$ git add <file or folder>

發佈了28 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章