【问题标题】:Remove changes from a commit hash in a given file git从给定文件 git 中的提交哈希中删除更改
【发布时间】:2021-12-24 09:04:06
【问题描述】:

我有一个 3 个月大的提交,假设提交 A 涉及 3 个文件 在过去的 3 个月中,提交了更多的提交,其中一些在提交 A 的更改下方添加了新代码

我想删除(不恢复)3 个文件中的 1 个中提交 A 的更改。

删除为空行而不是代码

我试过了

git show file_path | git apply -R -3

这会删除额外的代码(这超出了提交 A 的范围:如果有兴趣,请在下面详细说明)

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

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

提前致谢

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

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

【问题讨论】:

  • 请提供一个minimal reproducible example,我们可以运行它来展示您想要的 Git 所做的事情;例如,添加你想要的。

标签: git github git-reset git-revert git-apply


【解决方案1】:

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

接下来您要恢复其他两个不需要恢复的文件。 git checkout HEAD^ - file1 file2是恢复到原始文件内容的方式。

最后提交修改以覆盖比“Revert ...”更好的消息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-24
    • 2012-09-10
    • 2018-06-21
    • 2018-07-04
    • 2021-12-31
    • 1970-01-01
    • 2015-12-04
    • 2014-09-01
    相关资源
    最近更新 更多