如何从git中覆盖合并文件中恢复?

时间:2011-11-30 01:07:33

标签: git git-merge

我刚用我的git repo犯了一个错误(Dayquil'd时是愚蠢的编程)。我的步骤是:

  1. 开始编辑file.txt
  2. 在包含file.txt的repo上做了一个“git pull”。 File.txt是合并冲突的一部分。
  3. 对我在步骤1中打开的file.txt版本进行了一些编辑。
  4. 保存了我在步骤1中打开的文件,覆盖了合并。
  5. ???
  6. 我需要从步骤2解决合并,然后将该结果与步骤2中的编辑合并。我该怎么做?

2 个答案:

答案 0 :(得分:3)

听起来你的问题只是你覆盖了文件并丢失了合并冲突标记。处理此问题的最简单方法是使用git mergetool,它将使用GUI合并工具来处理冲突。此工具不依赖于带有冲突标记的文件的工作副本版本,它实际上使用您选择的GUI工具重新合并原始文件。我强烈推荐它作为合并冲突的常用解决方案。

如果您确实希望文件返回冲突标记,则可以使用git checkout -m -- file.txt。这将重新创建文件的合并冲突版本。请注意,您在步骤3和4中所做的任何更改都将丢失。

如果要保存所做的本地更改,可以使用git diff :2:file.txt file.txt查看file.txt的合并前副本与保存到磁盘的副本之间的差异。您可以将此管道传输到文件,以便稍后在解决合并后重新创建更改,或者甚至将git apply与文件一起应用为补丁(只要它不是'触摸任何合并改变的人。

答案 1 :(得分:1)

尝试做:

git checkout --merge -- file.txt