我希望将文件重置为以前的提交,但保持当前提交。所以如果我这么做了
git init
touch 1; git add 1; git commit -m "1"
touch 2; git add 2; git commit -m "2"
touch 3; git add 3; git commit -m "3"这将产生3次提交。我希望停留在提交#3上,但将阶段重置到在提交#2时的状态。
git reset --(hard|soft|mixed|merge|keep)git checkoutgit revert因此,在执行了一些神奇的命令blah之后,我希望得到以下结果:
git log显示头部仍然处于提交#3ls .显示我的文件系统上只有1和2文件。git diff或git diff --cached显示文件3已被删除。我可以做git reset --hard <hash-2>,但是这会将HEAD移动到提交#2。
发布于 2019-04-08 09:43:53
git revert HEAD -n使用-n或--no-commit,它会恢复工作树和索引中的更改,但不会创建提交。可以将HEAD替换为其他等效的提交-ish。如果要提交已恢复的文件,则需要运行git commit。
如果您想恢复连续提交,以注释中的情况为例,
git revert HEAD~3..HEAD -n发布于 2019-04-08 09:14:15
使用此方法可将特定文件还原为给定的提交。你的头会保持不变。
git checkout <commit-hash> -- file1/to/restore
发布于 2019-04-08 09:38:55
有一种方法我可以分三步完成:
a=$(git rev-parse HEAD)git reset --hard #hash-commit-2git reset --soft $ahttps://stackoverflow.com/questions/55569871
复制相似问题