不建议

不建议

我已多次提交。然后我不得不回到中间的提交。在那里进行了更改并创建了新分支。现在我想要做的是跳过(移除、删除)所有其他提交并使用分支作为主版本。但不知道该怎么做。

以下是对此情况的一些解释:

commit1 (latest)
commit2
commit3 (head pointing here)
other commits...

在 时commit3,我做出了更改并创建了新的分支来推动它们。

现在我想将分支版本设为主要版本,删除commit2commit1

答案1

既然你已经推动了,你最不可能破坏事物的选择可能是git revert

git checkout master
git revert commit1 commit2
git merge new-branch
git push

请注意,这将导致 master 具有与 new-branch 完全相同的文件,但 commit1 和 commit2 仍将存在于 master 的历史记录中,同时还有两个额外的提交可撤销其更改。


不建议

如果你真的、真的想删除已经从 master 推送的提交,首先,通知所有队友你可能会破坏一些东西,然后使用git reset

git checkout master
git reset --hard commit3
git merge new-branch
git push -f

--hard将从文件系统中删除 commit1 和 commit2 所做的所有更改。您可以使用--soft保留文件系统中的这些更改,同时仍删除这些提交。

你可能想让你的队友参考以下文档从上游 rebase 中恢复reset --hard(当谈到使用已推送的提交时,git reset 指向该部分)。

相关内容