我对我的git repo做了一些更改并做了一些提交。这是我想要做的,说我的git历史看起来像HEAD - > c1 - > c2 - > c3 - > C4。 问题 1)现在,如果我还原c1,它还会还原所有c2,c3,c4吗?我理解它只恢复c1并保留c2,c3,c4。 2)现在我想恢复所有c1,c2,c3和c4并返回HEAD。什么是最好的方法。
答案 0 :(得分:1)
Revert将创建一个提交,撤消您想要还原的修订版本的更改。
所以,如果你这样做:
git revert c1
你将以:
结束revertC1 - > (之前的HEAD) - > c1 - > c2 - > c3 - > c4 ......
它只会恢复提交更改。
因此,对于您想要删除HEAD的四个提交优先级的场景:
HEAD - > c1 - > c2 - > c3 - > C4
与:
相同HEAD - > HEAD~1 - > HEAD~2 - > HEAD~3 - > HEAD〜4
如果要删除当前提交之前的四个提交。你可以做到
git revert HEAD~5..HEAD~1
系统将提示您为每个还原创建提交消息,并可能解决冲突。
如果您尚未推送您的更改,我要做的是保持历史记录日志清洁:
撤消当前提交并保持代码更改
git reset --soft HEAD~1
存储代码更改
git stash
撤消最后四次提交并删除代码更改
git reset --hard HEAD~4
确保删除任何创建的文件和目录
git clean -di
重新应用我想保留的顶级提交中的更改
git stash pop
*修复冲突以防万一 没有冲突时。提交我的更改
git commit -am "My new changes"
如果准备推,请按。
git push
只有在您没有推动更改的情况下才会这样做。
答案 1 :(得分:0)
如果你将c1恢复为c1状态,但它将创建新的提交(c5),其中包含从c4到c1的所有更改。
[HEAD]--> c1 --> c2 --> c3 --> c4 --> c5 (c1 state)
|__________________________/\
revert