一位同事(我们称其为Aaron)被分配负责长期改造网站的一个部分。他创建了一个名为“aaron”的新Git分支,所有更改都在此分支上进行。在他工作时,我继续维护整个网站,并将我的更改提交到“master”。
最终,Aaron将他的分支合并到“master”。这不知何故导致了我在合并时间和创建“aaron”分支的时间之间提交到“master”的所有更改被还原。如果输入git show <合并提交的哈希值>,可以查看我在Aaron工作期间更改的每个文件的差异。这些差异显示了我所做的每一项更改的还原。它看起来就像是Aaron手动将分支中每个文件的内容复制到“master”中,并提交了更改(但实际上他没有这样做,我只是想说明一下日志显示的内容)。
根据Aaron的说法,他没有做任何奇怪的事情。他说他只运行了git pull origin/aaron。
是什么导致了这种情况?git pull origin aaron会否还原我对master的所有更改?
另外,有没有一种轻松的方法可以恢复我的更改到master而不还原他的所有工作?
编辑1:
在合并后被还原的文件之一是foo.txt。因此,我执行了以下操作:
日志未反映出在创建“aaron”分支后对“foo.txt”的任何更改。我本来期望在“aaron”分支的日志中看到我的某些更改被还原,但是没有。那么,这是证明Aaron所声称的不只是简单地拉取了一下吗?
编辑2:
我说他输入了“origin/aaron”,但实际上他输入了“origin aaron”。我已经进行了修改。
编辑3:
根据下面的建议,我选择通过重写历史来解决这个问题。我现在相信问题是由于错误的解决冲突尝试导致的。
最终,Aaron将他的分支合并到“master”。这不知何故导致了我在合并时间和创建“aaron”分支的时间之间提交到“master”的所有更改被还原。如果输入git show <合并提交的哈希值>,可以查看我在Aaron工作期间更改的每个文件的差异。这些差异显示了我所做的每一项更改的还原。它看起来就像是Aaron手动将分支中每个文件的内容复制到“master”中,并提交了更改(但实际上他没有这样做,我只是想说明一下日志显示的内容)。
根据Aaron的说法,他没有做任何奇怪的事情。他说他只运行了git pull origin/aaron。
是什么导致了这种情况?git pull origin aaron会否还原我对master的所有更改?
另外,有没有一种轻松的方法可以恢复我的更改到master而不还原他的所有工作?
编辑1:
在合并后被还原的文件之一是foo.txt。因此,我执行了以下操作:
git checkout aaron
git log foo.txt
日志未反映出在创建“aaron”分支后对“foo.txt”的任何更改。我本来期望在“aaron”分支的日志中看到我的某些更改被还原,但是没有。那么,这是证明Aaron所声称的不只是简单地拉取了一下吗?
编辑2:
我说他输入了“origin/aaron”,但实际上他输入了“origin aaron”。我已经进行了修改。
编辑3:
根据下面的建议,我选择通过重写历史来解决这个问题。我现在相信问题是由于错误的解决冲突尝试导致的。