Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何重现这种git冲突?_Git_Tree Conflict - Fatal编程技术网

我如何重现这种git冲突?

我如何重现这种git冲突?,git,tree-conflict,Git,Tree Conflict,我不明白他们添加的和我们添加的怎么会引起冲突 有人知道如何重现这些冲突吗?看起来你在描述()一个移动冲突 makoto@workspace:~/foo$ git merge A Updating d2cfb22..a512859 Fast-forward tax_db.txt => tax_file.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tax_db.txt => tax_file.txt

我不明白他们添加的
和我们添加的
怎么会引起冲突


有人知道如何重现这些冲突吗?

看起来你在描述()一个移动冲突

makoto@workspace:~/foo$ git merge A
Updating d2cfb22..a512859
Fast-forward
 tax_db.txt => tax_file.txt | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename tax_db.txt => tax_file.txt (100%)
makoto@workspace:~/foo$ git merge B
CONFLICT (rename/rename): Rename "tax_db.txt"->"tax_file.txt" in branch "HEAD" rename "tax_db.txt"->"tax_reference_chart.txt" in "B"
Automatic merge failed; fix conflicts and then commit the result.
makoto@workspace:~/foo$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)

    both deleted:       tax_db.txt
    added by us:        tax_file.txt
    added by them:      tax_reference_chart.txt

no changes added to commit (use "git add" and/or "git commit -a")
下面是它是如何下降的

你有两个开发者,亚当和鲍勃。Adam看到一个名为
tax\u db.txt
的资源文件,并确定该文件的名称有误-它只是一个以制表符分隔的文件-因此他将其重命名为“更好”的文件,如
tax\u file.txt

Bob看到同一个文件,并认为它的名称也有误,但不喜欢将其称为文件的想法;这更像是一个参考资料。因此,他将文件命名为
tax\u reference\u chart.txt

他们都有自己的
master
(为了简单起见,A和B)分支,并且他们都在愉快地工作,而忽略了彼此的变化,这导致了项目之间的差异

当发布经理Makoto想要合并Adam和Bob的分支时,他会遇到这种冲突

makoto@workspace:~/foo$ git merge A
Updating d2cfb22..a512859
Fast-forward
 tax_db.txt => tax_file.txt | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename tax_db.txt => tax_file.txt (100%)
makoto@workspace:~/foo$ git merge B
CONFLICT (rename/rename): Rename "tax_db.txt"->"tax_file.txt" in branch "HEAD" rename "tax_db.txt"->"tax_reference_chart.txt" in "B"
Automatic merge failed; fix conflicts and then commit the result.
makoto@workspace:~/foo$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)

    both deleted:       tax_db.txt
    added by us:        tax_file.txt
    added by them:      tax_reference_chart.txt

no changes added to commit (use "git add" and/or "git commit -a")
makoto@workspace:~/foo$git合并A
更新d2cfb22..a512859
快进
tax_db.txt=>tax_file.txt | 0
1个文件已更改,0个插入(+),0个删除(-)
重命名tax_db.txt=>tax_file.txt(100%)
makoto@workspace:~/foo$git合并B
冲突(重命名/重命名):在分支“HEAD”中重命名“tax\u db.txt”->“tax\u file.txt”在“B”中重命名“tax\u db.txt”->“tax\u reference\u chart.txt”
自动合并失败;修复冲突,然后提交结果。
makoto@workspace:~/foo$git状态
论分行行长
您有未合并的路径。
(修复冲突并运行“git提交”)
未合并路径:
(酌情使用“git add/rm…”标记分辨率)
两者均已删除:tax_db.txt
由我们添加:tax_file.txt
由他们添加:tax\u reference\u chart.txt
未向提交添加任何更改(使用“git add”和/或“git commit-a”)

在这一点上,基本上是到亚当和鲍勃的办公桌去听关于为什么他们对文件的重命名是合理的争论。

当然。两个人对同一个文件进行不同的更改,然后尝试提交它们。你为什么打算复制它?你想解决它吗?@Makoto,AFAIK这只会导致
和修改的
冲突,也称为内容冲突,我怀疑的是树冲突。树冲突是关于移动/丢失的文件,因此,树冲突更好地命名为文件系统树冲突。除了逐行检查两个文件外,有没有合并这种冲突的好方法?文件的内容从未更改;只有文件名。在合并冲突的情况下,一方必须获胜,因此Adam或Bob必须说服Makoto重新命名是个好主意。或者,Makoto可以打他们两人的头,告诉他们保留旧名字,并迫使他们解决问题。我说的是一个更复杂的情况,比如说,两个分支都移动并修改了同一个文件。这实际上发生在我们的项目中,跨越两个国家。嗯,这甚至更糟糕。(Git只是创建了两个文件,而不是像对待同一个文件一样对待它们。)你应该采取基本的预防措施(再次,告诉人们为什么重命名是个好主意),并最终迫使他们修复重命名。如果文件也被更新了,那么您可以像处理任何典型的合并冲突一样处理这些冲突-查看这两个更改是否都是必要的,并手动解决冲突,使用或不使用合并工具。