以下是我所拥有的:
dbd7868 (HEAD -> master) commit 3
19ea7e8 commit 2
5b4baae commit 1
我希望所有文件都与commit 2
中的文件完全相同。这就是我的尝试:
git checkout 19ea7e8
git commit -m "reverted to commit 2"
但结果就是这样:
HEAD detached at 19ea7e8
nothing to commit, working tree clean
期望的结果:
xxxxxxx (HEAD -> master) reverted to commit 2
dbd7868 commit 3
19ea7e8 commit 2
5b4baae commit 1
我试着环顾四周,但我找到了答案,其中一个命令将commit 3
从历史中删除,然后我找到了答案,其中不清楚历史是否被保留。
编辑:在尝试使用其中一个建议的解决方案后,我不得不再次设置测试项目。这就是我现在所拥有的:
9c4180f (HEAD -> master) jkl
38029d0 ghi
830efcd def
ae96f00 abc
这就是我想要的:
xxxxxxx (HEAD -> master) def again
9c4180f jkl
38029d0 ghi
830efcd def
ae96f00 abc
提交def again
应与def
完全相同。为了澄清,我希望能够进行任何提交。
答案 0 :(得分:5)
您可以使用命令git revert <hash1> <hash2> ..
尝试以下命令:
git revert dbd7868
它将创建一个新的提交,它将是commit 3的恢复。
如果要还原任何其他提交,只需使用提交哈希运行revert命令。例如:
git revert 5b4baae #to revert commit 1
git revert 19ea7e8 #to revert commit 2
在所有情况下,还原提交都将在提交3之上。
答案 1 :(得分:1)
我找到了解决方案,感谢John Ilacqua。
以下是我输入的确切命令:
git checkout 830efcd .
git commit -am "revert def"
这是输出:
684b0bb (HEAD -> master) revert def
9c4180f jkl
38029d0 ghi
830efcd def
ae96f00 abc