Git:没有分支机构的项目是否会发生合并冲突?

时间:2017-05-15 05:43:02

标签: git

这可能听起来是一个愚蠢的问题,但我只在master分支中工作,我有一个像这样的.txt文件:

abc
def
然后我将其改为

abc
ghi
然后我做了

$ git add .
$ git commit -m "trying to cause conflict"
$ git push

它没有任何问题,文件被更改了。我想知道如果项目除主人之外没有分支,git是否关心这个“冲突”案例。

3 个答案:

答案 0 :(得分:1)

获取合并冲突的规范方法是从分支alpha开始,从beta创建分支alpha,然后在两个分支上进行不兼容的更改。 在您的示例中,您只是更改文本文件的内容,git将很乐意跟踪该更改(并将其还原,存储,将其用于挑选,或者您可能想要做的任何其他事情)。

答案 1 :(得分:1)

答案取决于你如何定义“分支”。

在Git中,“branch”一词可以表示分支 name ,如master,或者 commit graph 中的分支。 (另见What exactly do we mean by "branch"?

通常,要在提交图中获取分支,至少需要两个名称。但是,master之类的分支是以文字refs/heads/开头的名称的简写:分支master实际上是refs/heads/master,如果您创建名为{{1}的分支它的全名为A。您的Git将这些名称存储在自己的名称到哈希ID映射的私有表中。此表还包含标记名称,例如refs/heads/A,它们是v2.3中名称的缩写,以及Git称之为远程跟踪分支的名称,如{ {1}},它是refs/tags/的缩写。

如果您有origin/master,则可能需要refs/remotes/origin/master才能使用自己的origin。这给你两个名字。只有一个是分支名称,但两者都可以 - 取决于您在分支中定义“branch”-result的方式!

除此之外,您可以使用“分离的HEAD”创建匿名分支(如果您选择首先将它们称为分支)。然后,您可以按其原始哈希ID命名提交,并通过合并此类提交,创建合并冲突。这是一种仅与一个分支名称发生冲突的方法。但是有多个分支吗?同样,这取决于谁定义“分支”。

答案 2 :(得分:1)

如果您没有任何其他明确的分支机构并且您是唯一的分支机构,则仍然可能发生冲突。

当前磁头与主轴分离时可能会发生这种情况。从技术上讲,当前的头,分离或仍然命名为主,是另一个不同于原始主人的分支。有时它只是在你不能很好地维护当地主人的时候。当你运行' git pull'时,如果当前头和远程主机在同一块上有不同的内容,则会发生冲突。

另一种可能的情况是当您尝试重新应用旧的提交或补丁时。您创建提交A,然后通过git revert A还原它以生成提交B.稍后您创建一个新的提交C,它接触部分或全部相同的A块,具有不同的更改。现在如果你挑选A,就会发生冲突。

发生冲突时,请检查工作流程是否合理,然后解决它们。