检查一个旧的提交并创建一个新的主分支?

Checkout an older commit and create a new master branch?

看来,我的一个项目的 master 分支走向了完全错误的方向。所以我想做的是:

我该怎么做?

我看到我可以创建一个新分支 branch1 然后使用

$ git branch -m master old_master
$ git branch -m branch1 master

备份旧的master,然后将新的分支重命名为master,但我想知道这样做是否有任何缺点,以及是否有更好的方法来实现我的目标(无论 "better" 在这种情况下是什么意思)。

有什么想法或提示吗?

PS: 我想"revert"的改动已经推送了,不能直接删除

1.You 必须在您的主分支上硬重置为要回滚到

的 sha-id
git reset --hard <commit_id>
  1. 在进行推送时,您必须使用 -f 选项

您也可以尝试执行 git 还原 而不是 git 重置

PS:如果你想保留历史记录,你可以用标签名称标记 master 分支,甚至创建一个名为 master_old

的分支

你说的方法真的很好。仅当您愿意失去到那时为止的开发历史时,才可以使用硬重置。

基本上,执行以下操作

git branch -m master old_master
git branch -m branch1 master

完成后,你需要强制推送master(因为你本地的分支历史和远程的完全不同)

git push -f origin master

另请注意,如果有多个开发人员在 master 分支上工作,则如果他们进行拉取,他们的本地 master 分支可能会损坏,因此他们最好在自己的机器上重新创建 master 分支。

git branch -D master
git branch master --track origin/master

强制推送和(可能)重新创建 master 分支都需要硬重置。