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