如何在A-B的两个分支A,B之间产生差异(在集合意义上)。我不希望显示B中的额外更改。
我有两个特性分支,分别是A
和B
。我过去曾合并过A和B。但我不确定A在B中有多少。B有A中没有的额外更改。此外,在最近的过去,将相同的更改添加到A和B中,作为单独提交,而不是从A到B中精挑细选。请注意,A和B从master
分支中分离合并提交。我想看看随着变化,在B中丢失了多少A。
我能够以提交的格式获得A-B,显示那些在A中但在B中缺失的提交。
git log --no-merges B..A
但是当A和B有相同的更改和不同的提交时,上面的帮助不是很大。Want I want是A-B,其格式是A中不在B中的更改的比较。
发布于 2020-06-17 20:41:45
您可以单步执行一个分支,然后合并另一个分支,然后“取消提交”所有不同的内容:
git checkout A --detach # in case you don't want to spoil branch A
git merge B
git reset --soft B
这很方便,因为您可以在IDE中打开文件,它将突出显示“已更改”的行。如果需要,您可以不断更改它们。不像通常的比较是静态的,只能在比较窗口中查看。
发布于 2020-06-17 16:12:17
我不是百分之百确定你在寻找以下哪一种:
git diff B A
将为您提供将B更改为A的内容所需的补丁;
git diff B...A
# same as :
git diff $(git merge-base A B) A
将给出“B和A的合并基数”和A之间的区别。
编辑啊,也许你正在寻找git log --cherry
:
$ git log --oneline --cherry B...A
= 52d74472c (HEAD -> A) update the thrusters
+ ca5649304 balance the hull # commits tagged with "+" are not present on B
= 507c0acea fix the airlock # commits tagged with "=" are also present on B
请注意,这将根据它们引入的补丁来比较提交;如果由于某种原因,补丁不完全相同,则两个提交将被视为不同。
这表示git rebase
或git cherry-pick
将保留的提交数。
git log --cherry-mark B...A
将显示A和B的两个列表,并使用+
和=
进行注释,以指示“原始”和“存在于其他分支上”。
https://stackoverflow.com/questions/62433091
复制