Git Merge覆盖我的文件而不显示冲突

时间:2018-03-21 12:01:12

标签: git merge

我不知道为什么,但今天我这样做了:

git checkout master

git pull origin master

git checkout myFeature

git merge master 

我正在将mastermyFeature分支合并,以便我可以解决任何冲突 令我惊讶的是,没有显示冲突,它覆盖了我的文件,我丢失了我在该新功能上所做的一切。

问题1:为什么会这样? Conflicts不应该出现? 问题2:如何正确还原?我做了 NOT 提交。

如果我执行git log它会显示所有可用的提交(请记住,我还没有提交此merge)。我不是100%确定我应该reset --hard到最后一次提交SHA1。我不想保留当前的更改(merge),但我希望将所有内容保留在merge之前,这是最后一次提交。

1 个答案:

答案 0 :(得分:1)

  问题1:为什么会这样?冲突不应该显示出来?

之所以发生这种情况,是因为你假设你的主人是merge,而不是你的分支。即

git checkout master  

你应该确保你在主分支上,然后运行merge

git merge myFeature
  

问题2:如何正确还原?我还没有承诺。

要还原上一个marge,请运行:

git reset head~ <path>

来自SO的回答也可能有所帮助。