我希望将重置文件复制到先前的提交但保留在当前提交中。所以,如果我这样做:
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 checkout
git revert
所以经过一些魔法命令blah
我想得到以下结果:
git log
表明HEAD仍在提交#3ls .
或1
显示文件2
被删除。我可以做git diff
,但这会将git diff --cached
移动到#2。
3
使用git reset --hard <hash-2>
或HEAD
它会恢复工作树和索引中的更改,但不会创建提交。 git revert HEAD -n
可以替换为其他等效的commit-ish。如果你想提交还原,你需要运行-n
。
如果你想恢复一些连续的提交,以你的评论为例,
--no-commit
使用此选项可将特定文件还原为给定的提交。你的HEAD将保持不变。
HEAD
我可以通过3个步骤完成它的一种方法:
git commit
git revert HEAD~3..HEAD -n
git checkout <commit-hash> -- file1/to/restore
您可以将任何tree-ish(此处:上一次提交的树)放入当前索引中,如下所示:
a=$(git rev-parse HEAD)
给你的
git reset --hard #hash-commit-2