从单个文件中删除随机提交

时间:2018-10-13 02:58:23

标签: git

我有一个文件,我对此文件进行了多项更改,并从新功能分支提交了每个更改。请参考下图。

F0 - C0 - added file "Test.sql" to the repo
F1- C1 -  ++ line 01
F2 - C2 - ++ line 02
F3 - C3 - ++ line 03
F4 - C4 - ++ line 04
F5 - C5 - ++ line 05

提交和功能沿袭的地方:

  C0 < C1 < C2 < C3 < C4 < C5 
  F0 < F1 < F2 < F3 < F4 < F5

现在,我打算使用以下命令从文件中还原落实C3的更改(即删除第03行):

    git revert --no-commit C3

但是我遇到合并冲突。

我打算做的是,仅从提交C3中删除更改,其他所有行将保持不变并且顺序相同。

我该怎么办? 请帮忙。

关于。 库玛吉特

1 个答案:

答案 0 :(得分:0)

您有合并冲突,因为下一次提交包含此行并以此为基础。唯一的解决方案是手动解决冲突。

您还可以为从C3手动删除的内容创建新的提交

我将向您展示如何编辑提交历史记录,删除不需要的特定提交。如果您只想拥有整个提交历史而没有一次提交,则可以使用rebase命令。

git log

复制C2个提交的哈希值。要更改之前,必须先提交一次。

git rebase -i hashOfC2Commit

将标志从p更改为d(放置)并保存(控制台中的命令:wq)。

现在,如果您有冲突,请打开编辑器并解决它。解决冲突后,请使用

git rebase --continue

这是解决冲突和编辑提交历史记录的简便方法。