假设我有git log
,如下所示:
commit 8379fef8952c9fde4c4f8bb9b3fb5dab80a61bc9
...
commit cc6c393f707da82aa3f0753db81b148d7eddaaf1
...
commit 6668e9087e3561b7797c91730f4ac0057fa85904
...
commit 2da2d26974d1ef57a02f3dfe2c7b5aa310f2efac
...
commit a625c16a2985d06f10fb72db9e6952fdf51e5000
...
说我想回到最底层的a625c16...
并且它上面的所有工作都很糟糕。我基本上想要吹掉我在最后4次提交中所做的一切,然后从底部提交重启。当我签出该提交时,我在no branch
并且处于分离的HEAD状态。那是什么意思?需要做什么才能继续在这个分支上工作,但是从4次提交之前呢?
答案 0 :(得分:3)
如果你没有推动它,你可以做
git reset --hard a625c16a2985d06f10fb72db9e6952fdf51e5000
这将彻底抛弃所有变化并忘记它们的每一次发生。但是,这意味着如果您在任何地方发布此内容,则必须执行git push --force
,这可能会被视为危险/反社会。
如果你想避免你可以做到
git revert 8379fef8952c9fde4c4f8bb9b3fb5dab80a61bc9
...
git revert 2da2d26974d1ef57a02f3dfe2c7b5aa310f2efac
将干净地退出所有更改,您将能够在没有--force的情况下推送。这意味着您的所有更改和撤消都将在历史记录中显示。
答案 1 :(得分:0)
如果您已经将要签出的提交作为分离的HEAD进行检查,则可以执行git branch -f branchname && git checkout branchname
。