簡體   English   中英

在Git中,找到更改相同對象的合並分支

[英]In Git, find merged branches which changed same object

我在Git中有發布分支,許多其他分支在這里合並。 我想在發行分支中找到文件,這些文件是從多個分支合並而成的。 我還希望收到更改相同對象的分支名稱。

例如,如果file_x在改變Branch1Branch2Branch3 ,和所有三個部門合並為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM