【问题标题】:Git merge (conflict)Git 合并(冲突)
【发布时间】:2017-07-24 17:44:27
【问题描述】:

我知道如果您修改文件中的相同行并尝试合并分支,您会遇到合并冲突,因为它不知道要保留哪个版本。

那么,这是否意味着如果您修改文件中的不同行,git 就可以合并它们?这是否也仅适用于添加新行或删除?如果在一个分支中,文件未修改/未触及,而在另一个分支中,有人删除了该文件中的几行,该怎么办。如果我们合并分支,git会保留删除吗?

谢谢!

【问题讨论】:

标签: git merge git-merge


【解决方案1】:

Git 不合并文件。它合并更改。

嗯,从技术上讲,它合并了分支,但如果我们考虑单个文件,它会合并这些分支上引入的更改。

因此,如您所说,如果在一个分支中我们没有修改文件,而在另一个分支中我们删除了文件的某些行,那么如果您合并,那么是的,删除的内容将被保留并合并。也就是说,最终合并的文件也会删除这些行。

确切的算法相当复杂,至少比“不一样的行”更复杂。

例如,合并算法需要识别变化的上下文,为了做到这一点,它需要周围没有变化的线条。

因此,如果在一个分支中修改了一行,而在另一个分支中修改了上一行或下一行,则尝试合并可能会导致合并冲突。

【讨论】:

  • 我认为“合并更改”在技术上比“合并分支”更正确,因为 Git 只是找到一个合并基础并将两个提交与该合并基础进行比较。特别是您可以使用git checkout hash1; git merge hash2 对另一个特定提交的合并进行分离的 HEAD 提交。有人可能会争辩说,这是两个匿名的分支,所以这并不是很明确的一种或另一种方式,无论如何这只是很好的区别,你的回答是正确的。 :-)
【解决方案2】:

当两个用户处理同一个文件时,通常不会出现任何合并冲突,除非他们修改了文件中的相同行。

这意味着如果一行在一个分支中被删除而在另一个分支中保持不变,当两个分支合并时,删除将被保留。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2015-08-23
    • 2012-10-29
    相关资源
    最近更新 更多