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



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

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 中删除更改,所有其他行将保持不变并按相同的顺序排列。

我该怎么办? 请帮忙。

问候。 库马尔吉特

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

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

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

git log

C2提交的复制哈希。在您想要更改之前,它必须是一次提交。

git rebase -i hashOfC2Commit

将标志从p更改为d(删除(并保存(在控制台中命令:wq(。

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

git rebase --continue

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

最新更新