Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 pull上的冲突带来未限制的远程更改_Git_Github_Git Pull_Git Merge Conflict - Fatal编程技术网

git pull上的冲突带来未限制的远程更改

git pull上的冲突带来未限制的远程更改,git,github,git-pull,git-merge-conflict,Git,Github,Git Pull,Git Merge Conflict,我将用一个例子来表达我的问题。 假设亚当和夏娃在主分支上工作,都在提交C1时签出。 Adam创建提交A1、A2并将它们推送到原点。 Eve创建与A2冲突的提交E1。 在推动更改之前,Eve必须更新其本地回购协议,因此她运行git pull。 Eve现在看到E1和A2(标记为“未合并路径”)引起的冲突,但当她运行“git状态”时,她也可以看到A1中所做的更改为“要提交的更改” 夏娃解决了她的冲突后,她从A1开始实施她的变化和亚当的变化,并推动。 来自提交A1的更改现在将出现在《起源》中夏娃的名字下

我将用一个例子来表达我的问题。
假设亚当和夏娃在主分支上工作,都在提交C1时签出。
Adam创建提交A1、A2并将它们推送到原点。
Eve创建与A2冲突的提交E1。
在推动更改之前,Eve必须更新其本地回购协议,因此她运行git pull。
Eve现在看到E1和A2(标记为“未合并路径”)引起的冲突,但当她运行“git状态”时,她也可以看到A1中所做的更改为“要提交的更改”

夏娃解决了她的冲突后,她从A1开始实施她的变化和亚当的变化,并推动。
来自提交A1的更改现在将出现在《起源》中夏娃的名字下(而不是亚当的名字)

为什么会发生这种情况?我怎样才能修复它?
还要注意的是,当没有冲突时不会发生这种情况

我知道使用git pull--rebase完全可以避免这个问题,我理解常规pull和rebase pull之间的区别,但我不明白它是如何避免这个问题的


谢谢

来自commit A1的更改现在将出现在《起源》中夏娃的名字下(而不是亚当的名字)。你的确切意思是什么?让我澄清一下,夏娃的提交将显示为合并提交,包含她的更改和亚当的更改(特别是-A1)。当你责怪git时,亚当从A1的更改是归因于合并提交还是归因于A1?我试图重现这个问题,但我发现没有冲突的更改仍然归因于原始提交,而不是合并提交。你是对的,我想我现在理解了我的错误。我被合并的行为弄糊涂了。还有一点让我不安的是,为什么A1中引入的更改显示为“要提交的更改”,并且尚未提交(因为它们没有创建任何冲突)。合并提交需要是单个提交,因此非冲突的更改和冲突的更改需要一起提交。这就是为什么在解决冲突的同时进行非冲突更改的原因。我同意“要提交的更改”这句话有点让人困惑,但实际上,即使对于无冲突的合并,当B合并到a中时,也会提交/引入来自分支B的更改。要认识到的重要一点是,合并提交是特殊的,git足够聪明,能够知道合并提交(已解决的冲突)产生了哪些更改和原始提交。