在提交后修复先前合并覆盖的文件



所以我确定,在某些时候,当我将一个功能分支合并到基本分支时,我放弃了一些更改,从那时起,许多其他的提交和修改被添加到基本分支中。

问题是:

有3个当前文件缺少旧提交的一些重要代码

当前3个文件已经被其他提交修改过

我想做什么:

我想基本上合并头(最后提交)与初始提交,然后从文件中丢弃一些代码块。

我试过的:Check out to commit's

创建了2个分支,第一个叫initcommit,第二个叫latestCommit…但是当我合并时,文件被覆盖了latestCommit的内容,当它应该提示我冲突错误时,但没有发生

你知道我该怎么做吗?

你可以做一些类似于"只恢复一组给定文件"的事情。:

  1. 创建一个补丁,该补丁描述如何仅将更改恢复到某些选定的文件
  2. 在当前提交上应用该补丁

带图表:

# the merge with the bad things
|
v
...*--*--*--m--*--*--*--n <- master
/
... --*--g
^
|
# the commit with the good things

您可以使用:git diff g m查看从gm的补丁,
您可以使用:git diff m g查看反向补丁(从m回到g)。

所以你可以试试:

  1. # create a revert patch only for selected files :
    git diff m g -- file1 file2 file3 > mypatch.txt
    
  2. # apply that patch to the current HEAD :
    git apply mypatch.txt
    

你甚至可以在步骤1之后在文本编辑器中打开mypatch.txt,如果你知道你只想在diff中保留一些选定的块,并完全删除其他的。

最新更新