如何将指定提交影响的所有文件重置到提交前状态?
仅重置指定提交涉及的文件到提交前状态的方法
要实现这个需求,你可以通过Git的命令组合自动获取目标提交修改的文件,再批量重置这些文件到提交前的状态,具体步骤如下:
获取目标提交修改的所有文件
替换<commit-hash>为你的目标提交哈希值,用以下命令列出该提交修改的所有文件(仅输出文件名,无多余信息):git show --name-only --pretty="format:" <commit-hash>批量重置这些文件到提交前的状态
通过命令替换,把第一步得到的文件列表传入git checkout,将文件恢复到目标提交的父版本(即提交前的状态):git checkout <commit-hash>^ -- $(git show --name-only --pretty="format:" <commit-hash>)这个操作会直接覆盖这些文件当前的内容(包括后续提交对它们的修改)。如果需要先确认目标提交带来的具体变更,可以先执行:
git diff <commit-hash>^ <commit-hash> -- $(git show --name-only --pretty="format:" <commit-hash>)查看差异后再执行重置操作。
提交重置后的变更
重置完成后,这些文件会处于未暂存状态,执行以下命令保存变更:git add . git commit -m "Revert changes from commit <commit-hash> on affected files"
注意:此操作会丢弃后续提交对目标文件的所有修改,执行前请确认你清楚要放弃的内容,必要时可先创建分支备份当前状态。
内容的提问来源于stack exchange,提问作者Anton Duzenko
相关产品推荐
相关产品推荐

