git 高級(jí)指北
解決分支與分支之間的碰撞
- 合并分支
# 直接將branch2硬合到branch1勾扭,有沖突再解決沖突
git checkout branch1
git merge branch2
- 合并分支的某個(gè)文件
# 只將branch2的test.c合并到branch1
git checkout branch1
git checkout branch2 test.c
- 比較兩個(gè)分支的差異
git diff branch1 branch2
- 比較兩個(gè)分支的提交
# branch1有的而branch2沒有
git log branch1 ^branch2
# branch1比branch2多的提交
git log branch1..branch2
# 不管誰提交的多裁替,有差異的提交
git log branch1...branch2
# 左箭頭< 標(biāo)識(shí)branch1,右箭頭>標(biāo)識(shí)branch2
git log --left-right branch1...branch2
將log格式化輸出
git log --date=iso --pretty=format:'"%h","%an","%ad","%s"' >log.csv
# 將2021-12-12之后的commit輸出
git log --date=iso --pretty=format:'"%h","%an","%ad","%s"' --after="2021-12-12" >log.csv
logc參數(shù)說明如下:
-p 按補(bǔ)丁格式顯示每個(gè)更新之間的差異摧玫。
--stat 顯示每次更新的文件修改統(tǒng)計(jì)信息。
--shortstat 只顯示 --stat 中最后的行數(shù)修改添加移除統(tǒng)計(jì)绑青。
--name-only 僅在提交信息后顯示已修改的文件清單诬像。
--name-status 顯示新增、修改闸婴、刪除的文件清單坏挠。
--abbrev-commit 僅顯示 SHA-1 的前幾個(gè)字符,而非所有的 40 個(gè)字符邪乍。
--relative-date 使用較短的相對(duì)時(shí)間顯示(比如降狠,“2 weeks ago”)对竣。
--graph 顯示 ASCII 圖形表示的分支合并歷史。
--pretty 使用其他格式顯示歷史提交信息喊熟“胤荆可用的選項(xiàng)包括 oneline,short芥牌,full烦味,fuller 和 format(后跟指定格式)
格式信息說明如下:
選項(xiàng) 說明
%H 提交對(duì)象(commit)的完整哈希字串
%h 提交對(duì)象的簡(jiǎn)短哈希字串
%T 樹對(duì)象(tree)的完整哈希字串
%t 樹對(duì)象的簡(jiǎn)短哈希字串
%P 父對(duì)象(parent)的完整哈希字串
%p 父對(duì)象的簡(jiǎn)短哈希字串
%an 作者(author)的名字
%ae 作者的電子郵件地址
%ad 作者修訂日期(可以用 -date= 選項(xiàng)定制格式)
%ar 作者修訂日期,按多久以前的方式顯示
%cn 提交者(committer)的名字
%ce 提交者的電子郵件地址
%cd 提交日期
%cr 提交日期壁拉,按多久以前的方式顯示
%s 提交說明
-<n>
僅顯示最近的 n 條提交谬俄。
--since, --after
僅顯示指定時(shí)間之后的提交。
--until, --before
僅顯示指定時(shí)間之前的提交弃理。
--author
僅顯示作者匹配指定字符串的提交溃论。
--committer
僅顯示提交者匹配指定字符串的提交。
--grep
僅顯示提交說明中包含指定字符串的提交痘昌。
-S
僅顯示添加或刪除內(nèi)容匹配指定字符串的提交
可以在比較兩個(gè)分支的同時(shí),將日志格式化輸出:
git log --date=iso --pretty=format:'"%h","%an","%ad","%s"' branch1..branch >log.csv