工作提交5提交前。一个人怎么做到最好?

时间:2017-01-31 17:09:20

标签: git

假设我有git log,如下所示:

commit 8379fef8952c9fde4c4f8bb9b3fb5dab80a61bc9
...

commit cc6c393f707da82aa3f0753db81b148d7eddaaf1
...

commit 6668e9087e3561b7797c91730f4ac0057fa85904
...

commit 2da2d26974d1ef57a02f3dfe2c7b5aa310f2efac
...

commit a625c16a2985d06f10fb72db9e6952fdf51e5000
...

说我想回到最底层的a625c16...并且它上面的所有工作都很糟糕。我基本上想要吹掉我在最后4次提交中所做的一切,然后从底部提交重启。当我签出该提交时,我在no branch并且处于分离的HEAD状态。那是什么意思?需要做什么才能继续在这个分支上工作,但是从4次提交之前呢?

2 个答案:

答案 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