从给定文件中的提交哈希中删除更改 git

Remove changes from a commit hash in a given file git

我有一个 3 个月大的提交,假设涉及 3 个文件的提交 A 在过去的 3 个月里,有更多的提交,其中一些在提交 A

的更改下方添加了新代码

我想删除(而不是还原)3 个文件之一中提交 A 的更改。

删除空白行而不是代码

我试过了

git show <提交 A 的哈希值> file_path | git 应用-R -3

这会删除额外的代码(不在提交 A 的范围内:如果感兴趣,请在下面查看详细信息)

我能想到的一种方法是在文件上使用 git blame,只要哈希匹配,就删除行 但似乎是一个非常迭代的过程和耗时。

任何指示都会有所帮助..

提前致谢

从文件中删除了超出提交 A 范围的额外代码:

  1. 提交 A 已添加到文件末尾
  2. 新提交在文件末尾的提交 A 之后添加了更多代码(低于提交 A 的更改)
  3. 现在当我们反转提交 A 中的更改时(使用 git apply -R -3),它​​会从提交 A 开始到文件末尾进行清理,因为 git,代码是最初添加在文件末尾

我仍然会尝试 git-revert 以删除提交 A 中的行。

接下来你要恢复另外两个不需要恢复的文件。 git checkout HEAD^ - file1 file2是恢复到原始文件内容的方法。

最终提交修改以覆盖比“还原...”更好的消息