我在并行分支中对本地文件进行了一些更改。我使用git stash
来保存所做的更改并将其他更改保存到主版本中,而不必在线发布。因此,我不得不解决一些有关文件冗余文件的合并冲突。逐步,这是我在git bash上的代码:
git stash
git pull origin master
git stash pop
git mergetool
我使用myFile.py
作为融合解决了一个文件mergetool
的冲突。我的问题是在合并步骤期间,我忘记了远程文件(myFile_remote_7572.py
)中的大部分代码。目前,我无法在笔记本电脑上的任何位置找到该文件。我想还原它以找到我的最后一个代码,而无需重新启动合并步骤。谢谢...
答案 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
来忘记分辨率。