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

如何将已被回退的历史commit改动重新导入当前HEAD的worktree?

方案1:使用git cherry-pick无提交模式(最推荐)
  • 第一步找到你要恢复的旧commit哈希值,记为<OLD_COMMIT_HASH>
  • 执行命令:git cherry-pick -n <OLD_COMMIT_HASH>
    • 参数-n(等价于--no-commit)的作用是仅将该commit的改动应用到当前工作区和暂存区,不会自动生成新提交
  • 如果你希望改动完全处于未暂存的已修改状态(方便逐文件检查修改),再执行一次git reset即可,此时运行git status就会看到所有改动都是未暂存的修改状态
  • 如果应用过程中出现冲突,按照提示解决冲突即可,冲突解决后不需要执行cherry-pick --continue,直接处理改动即可
方案2:使用git diff + git apply组合

如果不想使用cherry-pick,也可以通过导出补丁的方式应用改动:

  • 导出旧commit的改动补丁:git diff <OLD_COMMIT_HASH>^ <OLD_COMMIT_HASH> > old_commit.patch
  • 将补丁应用到当前工作区:git apply old_commit.patch
  • 如果存在冲突,命令行将直接提示冲突位置,手动修正即可,应用完成后所有改动默认都是未暂存的已修改状态
  • 验证完成后可以删除临时补丁文件:rm old_commit.patch
注意事项
  • 两种方案都不会自动生成新commit,你可以在改动完全检查修复完成后,再手动执行git add、git commit提交新的修复版本
  • 冲突解决时如果某个文件改动冲突太多不想保留,直接执行git checkout HEAD -- <冲突文件名>就能恢复该文件到当前HEAD的状态,丢弃该文件的旧commit改动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:24:04