解决合并冲突后,使用还原_remote_文件

时间:2019-05-17 08:35:28

标签: git git-merge git-stash

我在并行分支中对本地文件进行了一些更改。我使用git stash来保存所做的更改并将其他更改保存到主版本中,而不必在线发布。因此,我不得不解决一些有关文件冗余文件的合并冲突。逐步,这是我在git bash上的代码:

git stash
git pull origin master
git stash pop
git mergetool

我使用myFile.py作为融合解决了一个文件mergetool的冲突。我的问题是在合并步骤期间,我忘记了远程文件(myFile_remote_7572.py)中的大部分代码。目前,我无法在笔记本电脑上的任何位置找到该文件。我想还原它以找到我的最后一个代码,而无需重新启动合并步骤。谢谢...

1 个答案:

答案 0 :(得分:1)

我假设“已经忘记了远程文件中的大部分代码”,这意味着您丢弃了远程部分会带入的东西,并用自己的更改覆盖了它。

内容仍然存在于您的存储库中。

如果您没有进行任何进一步的提交,则可以使用以下命令恢复特定文件中的合并冲突:

git checkout --merge -- that/particular/file

当然,这也会带回您已经解决的文件中的冲突。没有办法保留这些并仍然恢复未解决的部分。 (所有这些都不会影响其他文件中的冲突-是否已解决)。

如果所有方法都失败,那么您仍然可以使用存储空间,并且可以重新开始处理所有文件中的所有合并冲突:

git reset --hard   # warning! erases all your uncommitted changes
git stash apply    # recover the stash and all its conflicts

尽管您说git stash pop并没有丢失存储,因为在合并冲突时Git实际上并没有“弹出”存储。这给您另一个机会讲git stash apply

如果我处于您的位置,我将执行以下操作(这是专家的用法):

git commit -a           # keep a record of what I have done so far
git reset --hard HEAD~  # go back before the commit to start over
git stash apply
git checkout --merge -- that/particular/file
git rerere forget -- that/particular/file

您可能会注意到,Git会记住在本地计算机上提交的合并分辨率,以在重复合并时提供帮助。这里有点尴尬,因为它会记住并重用 that/particular/file中的错误分辨率。因此,我要求Git使用git rerere forget来忘记分辨率。