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