You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在git revert回退提交时仅撤销指定文件夹的改动?

结论

该需求完全可以实现,你可以通过以下两种常用方案操作:

方案1:先执行revert再重置不需要回退的文件

  • 第一步:先正常执行回退命令,但不要提交:
    git revert -m 1 --no-commit hash1
  • 第二步:把b文件夹下的改动移出暂存区,放弃对b文件夹的回退操作:
    git reset HEAD b/
  • 第三步:丢弃工作区中b文件夹的变更,恢复到回退前的状态:
    git checkout -- b/
  • 第四步:提交剩下的只针对a文件夹的回退内容即可:
    git commit -m "Revert hash1 changes only in a/ directory"

方案2:直接基于原提交生成a文件夹的反向patch

你也可以直接生成原提交中a文件夹改动的反向补丁并应用,一步完成操作:
git diff hash1 hash1^ -- a/ | git apply -
执行完成后直接提交改动即可。

注意:如果你的hash1不是合并提交,不需要加-m 1参数,只有回退合并提交时才需要指定父节点序号。

内容的提问来源于stack exchange,提问作者Vigneshwaran Rajasekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:36:04