Git 在5个提交之前完成提交。如何做到最好?
假设我有一个如下的Git 在5个提交之前完成提交。如何做到最好?,git,Git,假设我有一个如下的git日志: commit 8379fef8952c9fde4c4f8bb9b3fb5dab80a61bc9 ... commit cc6c393f707da82aa3f0753db81b148d7eddaaf1 ... commit 6668e9087e3561b7797c91730f4ac0057fa85904 ... commit 2da2d26974d1ef57a02f3dfe2c7b5aa310f2efac ... commit a625c16a2985d06
git日志
:
commit 8379fef8952c9fde4c4f8bb9b3fb5dab80a61bc9
...
commit cc6c393f707da82aa3f0753db81b148d7eddaaf1
...
commit 6668e9087e3561b7797c91730f4ac0057fa85904
...
commit 2da2d26974d1ef57a02f3dfe2c7b5aa310f2efac
...
commit a625c16a2985d06f10fb72db9e6952fdf51e5000
...
假设我想回到底部的一个
a625c16…
,上面的所有工作都很糟糕。我基本上想把我在过去4次提交中所做的一切都吹走,然后从底部提交重新开始。当我签出提交时,我处于无分支
和分离的头部状态。这是什么意思?需要做什么才能继续处理这个分支,但从4次提交开始?如果您还没有推动这个,您可以这样做
git reset --hard a625c16a2985d06f10fb72db9e6952fdf51e5000
git revert 8379fef8952c9fde4c4f8bb9b3fb5dab80a61bc9
...
git revert 2da2d26974d1ef57a02f3dfe2c7b5aa310f2efac
这将完全丢弃所有更改,并忘记每次发生的更改。然而,这将意味着如果你在任何地方发布了这篇文章,你将不得不执行git push--force
,这可能被认为是危险的/反社会的
如果你想避免,你可以这样做
git reset --hard a625c16a2985d06f10fb72db9e6952fdf51e5000
git revert 8379fef8952c9fde4c4f8bb9b3fb5dab80a61bc9
...
git revert 2da2d26974d1ef57a02f3dfe2c7b5aa310f2efac
这将彻底撤销所有更改,并且您可以不使用强制方式进行推送。这意味着您的所有更改和恢复都将在历史记录中可见。如果您没有按此按钮,则可以执行此操作
git reset --hard a625c16a2985d06f10fb72db9e6952fdf51e5000
git revert 8379fef8952c9fde4c4f8bb9b3fb5dab80a61bc9
...
git revert 2da2d26974d1ef57a02f3dfe2c7b5aa310f2efac
这将完全丢弃所有更改,并忘记每次发生的更改。然而,这将意味着如果你在任何地方发布了这篇文章,你将不得不执行git push--force
,这可能被认为是危险的/反社会的
如果你想避免,你可以这样做
git reset --hard a625c16a2985d06f10fb72db9e6952fdf51e5000
git revert 8379fef8952c9fde4c4f8bb9b3fb5dab80a61bc9
...
git revert 2da2d26974d1ef57a02f3dfe2c7b5aa310f2efac
这将彻底撤销所有更改,并且您可以不使用强制方式进行推送。这意味着您的所有更改和恢复都将在历史记录中可见。如果您已经将要签出的提交作为分离头,您只需执行
git branch-f branchname&&git checkout branchname
,如果您已经将要签出的提交作为分离头,您可以简单地执行git branch-f branchname&&git checkout branchname
假设您正在处理分支master
,然后将其重命名为例如BAD\u branch
,然后从上一次正确提交创建一个新的master
分支。如果您决定确实需要对BAD_分支
进行任何更改,则可以稍后将这些更改合并到新的master
分支。假设您正在处理分支master
,则将其重命名为例如BAD_分支
,然后从上一次良好提交创建一个新的master
分支。如果您决定您确实需要在BAD_分支
中进行任何更改,那么您可以稍后将这些更改合并到新的master
分支。如果我推了它怎么办?正如我在回答中所说的,执行还原,或者使用--force?如果我推了它怎么办?正如我在回答中所说的,执行还原,或者使用--force