如何在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
相关产品推荐
相关产品推荐

