首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在非冲突合并中进行三路合并?

如何在非冲突合并中进行三路合并?
EN

Stack Overflow用户
提问于 2010-06-25 23:23:44
回答 2查看 4.7K关注 0票数 5

如何在GIT中禁用自动合并

其目的是在调用命令链期间,在自动合并中具有与冲突合并解决相同的行为:

代码语言:javascript
复制
$ git fetch
$ git merge some_branch
$ git mergetool

最后一个命令引导我们在合并冲突的情况下进行文件的3路合并。我想有一个简单的方式来执行相同的3路合并文件,没有冲突合并。

我在网上找不到任何解决办法,是吗?

我想到了一些解决办法,但它宁愿避免。

提前谢谢你,

阿列克斯

EN

回答 2

Stack Overflow用户

发布于 2010-06-26 05:19:12

对于只在一方或另一方进行的更改,可以通过取消merge属性来防止自动合并(请参阅“执行三方合并”下的基属性 )。为缺少合并属性(或将其设置为“二进制”)的路径名进行的合并将离开工作树中当前分支的版本,并使路径名的索引条目处于冲突状态。

如果希望鼓励每个人都这样工作,可以将其放入.gitattributes文件并提交。如果您只想自己这样做,您可以将其放入一个未实现的.gitattributes文件中,或者将其放入存储库的$GIT_DIR/info/attributes文件(您可以随意添加/删除/重命名以启用/禁用该属性)。

代码语言:javascript
复制
#    repository/.git/info/attributes
# OR
#    .gitattributes
* -merge

如果双方都进行了相同的更改,则即使此配置也不会引起冲突。

票数 6
EN

Stack Overflow用户

发布于 2010-06-26 05:16:19

诀窍是,git解决合并的方式是:

  • 始终基于三向合并(因为提交图允许很容易地获得一个共同的祖先)
  • 始终是无缝的,除非冲突(在冲突中,流程由您协助)

因此,即使您定义了一个合并驱动程序,它也不会启动,除非存在某种冲突。

要尝试的第一个设置是定义一个合并属性未设置

未定 将当前分支的版本作为暂定合并结果,声明合并具有冲突。这适用于不具有定义良好的合并语义的二进制文件。

您可以在.gitattributes文件中写入

代码语言:javascript
复制
 * -merge

,并查看这是否足以触发所有合并文件上的mergetool。

"unset“特性不是git merge的直接选项之一,原因之一是:

试图在文件级别取消3路合并并不是该合并过程的一部分(同样,在树级进行推理)。

因此,它更适合作为一个属性,该属性可以为特定的文件集设置。

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

https://stackoverflow.com/questions/3122056

复制
相关文章

相似问题

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