我的Git仓库有分支
这会给我所有在
示例输出:
我希望找到一个解决方案,输出只有
现在,我的目标是找到从BranchA合并到master的所有合并提交。通过观察图表,我可以看到我正在寻找L和D。然而,让我无法以编程方式解决这个问题的曲线球是合并提交I,在此提交中,将master合并到BranchA。
在这种情况下,如果我们对master中的所有提交使用“branch --contains”方法,我们会得到L、D和B。但是,如果我们对master中不在BranchA中的所有提交使用branch --contains,则只会得到L。两种方法都无法获得所需的输出。
同样地,如果我们使用git merge-base来查找父级,我们只会得到L。
据我所知,似乎没有一个好的方法来区分B和D,因为这两个提交都在BranchA的历史记录中。我可以通过观察它们来判断它们是不同的,但Git似乎没有一个好的方法来区分它们。
master
,BranchA
,BranchB
和BranchC
。现在所有这些分支都已经合并到了主分支master
中,可能多次合并(出于任何原因,这是一个假设的场景)。我想找到所有将BranchA
合并到master
的合并提交记录。在提问之前,我已经做了以下工作:git log master ^BranchA --merges --oneline
这会给我所有在
master
中但不在BranchA
中的合并提交。这实际上给了我所有我要找的提交,但也可能给了我不想要的提交,比如从BranchB
和BranchC
合并到master中的提交。示例输出:
10bdc8b Merge branch 'BranchA'
383693a Merge branch 'BranchB'
8af3b5c Merge branch 'master' of 192.168.0.0:/path/to/repo.git
aa0f22c Merge branch 'master' into BranchC
72bbf3a Merge branch 'BranchA'
fac1157 Merge branch 'BranchB'
我希望找到一个解决方案,输出只有
10bdc8b
和 72bbf3a
。不要仅仅查找名为 'BranchA' 的提交;我知道在这种情况下可以工作,但是可能会遇到合并提交具有自定义消息的情况,因此它可能不总是有效。
编辑
目前已经有一些好的回答,但是不幸的是,我遇到了一个墙壁,不知道该如何跨越。考虑以下场景:
F <-BranchB
/ \
/ \
A-----B----C-----D--E----K----L <-master
\ / \ /
\ / \ /
G----H--------I---J <-BranchA
现在,我的目标是找到从BranchA合并到master的所有合并提交。通过观察图表,我可以看到我正在寻找L和D。然而,让我无法以编程方式解决这个问题的曲线球是合并提交I,在此提交中,将master合并到BranchA。
在这种情况下,如果我们对master中的所有提交使用“branch --contains”方法,我们会得到L、D和B。但是,如果我们对master中不在BranchA中的所有提交使用branch --contains,则只会得到L。两种方法都无法获得所需的输出。
同样地,如果我们使用git merge-base来查找父级,我们只会得到L。
据我所知,似乎没有一个好的方法来区分B和D,因为这两个提交都在BranchA的历史记录中。我可以通过观察它们来判断它们是不同的,但Git似乎没有一个好的方法来区分它们。