首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`merge --squash`之后的后续合并导致冲突

`merge --squash`之后的后续合并导致冲突
EN

Stack Overflow用户
提问于 2020-02-12 13:42:45
回答 2查看 48关注 0票数 0

正常合并:

代码语言:javascript
复制
$ git merge feature01
$ git merge feature02

一切都很好。

挤压合并:

代码语言:javascript
复制
$ git merge --squash feature01 # OK
$ git merge --squash feature02
Auto-merging src/aaa.js
CONFLICT (content): Merge conflict in src/XXX.js
....

为什么会这样呢?如何使merge --squash工作(后续合并工作查找)?

EN

回答 2

Stack Overflow用户

发布于 2020-02-12 14:23:37

好吧..。我的直觉是,在您正在处理的分支之外,有feature01和feature02的共同历史……当你做普通的合并时,git可以看到这一点,它是合并计算的一部分……但是如果你和南瓜合并,那么这种共同的历史就会从gits的视线中消失,这可能会导致冲突……例如,在合并的第二个分支上,您修改了在第一个合并的分支上引入的更改...如果您尝试合并它,那么没有历史背景可以判断您是从第一个分支上的更改开始的……所以你会得到一个冲突。

票数 0
EN

Stack Overflow用户

发布于 2020-02-12 16:16:24

( @eftshift0 t0在他的评论中提到:)

如果在合并之前,两个分支的历史记录如下所示:

代码语言:javascript
复制
# featureA and featureB have some common history :
--*--*--x--a <- master
         \
          *--*--y--b <- featureA
                 \
                  *--*--*--c <- featureB

  • 在运行git merge featureA时,git使用现有的提交:

--*--*--x--a-b‘<- master \/ *--*--y--b <- featureA \*-c <- featureB

它有足够的信息知道它应该使用y作为featureB的合并基础,另一方面,在运行git merge --squash featureB时使用

--*--*--x--a--b‘<- master \ *--*--y--b <- featureA \*-c <- featureB

它将创建一个与分支featureB不再相关的新提交,并在合并featureB.时尝试重新应用更改的x..y

您可以查看分支的历史记录:

从命令行使用客户端:git log --graph featureA featureB master

  • or a gui
  • git guigit-krakengit-extensions,...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60181849

复制
相关文章

相似问题

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