我们将称为 Aaron 的同事被指派对网站的一个部分进行翻新,作为一项长期项目。他创建了一个新的 Git 分支,名为aaron
. 他所有的更改都是在这个分支上进行的。在他工作期间,我继续维护整个站点,将我的更改提交到master
.
最终,Aaron 将他的分支合并到master
. 这以某种方式恢复了我master
在合并时间和aaron
首次创建分支时间之间所做的所有提交。如果我键入git show <hash of merge commit>
,我可以看到我在 Aaron 在他的分支上工作时更改的每个文件的差异。这些差异显示了我所做的每一个更改的还原。master
如果 Aaron 手动将其分支上每个文件的内容复制到并提交更改,它看起来就像这样。(他没有这样做。我只是想说明日志显示的内容。)
据亚伦说,他没有做任何奇怪的事情。他说他刚刚跑了git pull origin/aaron
。
是什么原因造成的?是否有可能git pull origin aaron
将我的所有更改恢复为master
?
另外,有没有一种简单的方法可以在不恢复他所有工作的情况下恢复我对 master 所做的更改?
编辑1:
更改master
并在合并后恢复的文件之一是foo.txt
. 所以我这样做了:
git checkout aaron
git log foo.txt
日志不反映创建分支foo.txt
后的任何更改。aaron
我有点期待在分支的日志中某处看到我的更改的恢复aaron
,但我没有。那么,这是否是亚伦所做的其他事情的最终证据,而不是他声称所做的简单拉动?
编辑2:
我说过他打字origin/aaron
,但他实际上打字origin aaron
。我在上面改了。
编辑 3
根据下面的建议,我选择通过重写历史来解决这个问题。在这一点上,我确信问题是由错误的解决冲突的尝试引起的。