这可能听起来是一个愚蠢的问题,但我只在master分支中工作,我有一个像这样的.txt文件:
abc
def
然后我将其改为
abc
ghi
然后我做了
$ git add .
$ git commit -m "trying to cause conflict"
$ git push
它没有任何问题,文件被更改了。我想知道如果项目除主人之外没有分支,git是否关心这个“冲突”案例。
答案 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,就会发生冲突。
发生冲突时,请检查工作流程是否合理,然后解决它们。