[英]In Git, find merged branches which changed same object
我在Git中有發布分支,許多其他分支在這里合並。 我想在發行分支中找到文件,這些文件是從多個分支合並而成的。 我還希望收到更改相同對象的分支名稱。
例如,如果file_x
在改變Branch1
, Branch2
和Branch3
,和所有三個部門合並為Release
分支機構,Git的命令的預期的結果應該是:
file_x - Branch1 Branch2 Branch3
假設所有合並都是使用--no-ff
,並且每個合並提交的注釋都包括合並的分支名稱,並且沒有刪除任何分支。
在發行分支上, git log --merges --pretty=format:'%h: %s'
列出合並提交,如下所示:
$ git log --merges --pretty=format:'%h: %s'
cca9cf0: Merge branch 'Branch1'
在這種情況下,如果git log cca9cf0^..Branch1 file_x
顯示在Branch1中更改了任何日志file_x,否則在Branch1中未更改file_x。
因此,您可以編寫一個腳本,通過第一個git log
命令查找所有合並提交和分支,並使用第二個git log
命令為每個分支檢查給定文件是否已更改,並打印更改了文件的分支。
git log --first-parent --merges -m --name-only --format=%x0a%H \
| awk '
NF==0 { tagline=!tagline;next }
tagline { commit=$1 }
!tagline { print commit,$0 }
' \
| sort -k2 | uniq -Df1
將使您受到多次合並影響的所有文件進入已簽出的分支,並影響到它們的合並。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.