首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让git显示更改A-B,其中A和B是分支

如何让git显示更改A-B,其中A和B是分支
EN

Stack Overflow用户
提问于 2020-06-17 23:50:46
回答 2查看 61关注 0票数 0

如何在A-B的两个分支A,B之间产生差异(在集合意义上)。我不希望显示B中的额外更改。

我有两个特性分支,分别是AB。我过去曾合并过A和B。但我不确定A在B中有多少。B有A中没有的额外更改。此外,在最近的过去,将相同的更改添加到A和B中,作为单独提交,而不是从A到B中精挑细选。请注意,A和B从master分支中分离合并提交。我想看看随着变化,在B中丢失了多少A。

我能够以提交的格式获得A-B,显示那些在A中但在B中缺失的提交。

代码语言:javascript
运行
复制
git log --no-merges B..A

但是当A和B有相同的更改和不同的提交时,上面的帮助不是很大。Want I want是A-B,其格式是A中不在B中的更改的比较。

EN

回答 2

Stack Overflow用户

发布于 2020-06-18 04:41:45

您可以单步执行一个分支,然后合并另一个分支,然后“取消提交”所有不同的内容:

代码语言:javascript
运行
复制
git checkout A --detach # in case you don't want to spoil branch A
git merge B
git reset --soft B

这很方便,因为您可以在IDE中打开文件,它将突出显示“已更改”的行。如果需要,您可以不断更改它们。不像通常的比较是静态的,只能在比较窗口中查看。

票数 1
EN

Stack Overflow用户

发布于 2020-06-18 00:12:17

我不是百分之百确定你在寻找以下哪一种:

代码语言:javascript
运行
复制
git diff B A

将为您提供将B更改为A的内容所需的补丁;

代码语言:javascript
运行
复制
git diff B...A

# same as :
git diff $(git merge-base A B) A

将给出“B和A的合并基数”和A之间的区别。

编辑啊,也许你正在寻找git log --cherry

代码语言:javascript
运行
复制
$ 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 rebasegit cherry-pick将保留的提交数。

git log --cherry-mark B...A将显示A和B的两个列表,并使用+=进行注释,以指示“原始”和“存在于其他分支上”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62433091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档