检查一个旧的提交并创建一个新的主分支?
Checkout an older commit and create a new master branch?
看来,我的一个项目的 master
分支走向了完全错误的方向。所以我想做的是:
- 检出旧的提交
- 使用新分支向不同的方向发展
- 调用这个新分支
master
并停止旧的 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>
- 在进行推送时,您必须使用 -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 分支都需要硬重置。
看来,我的一个项目的 master
分支走向了完全错误的方向。所以我想做的是:
- 检出旧的提交
- 使用新分支向不同的方向发展
- 调用这个新分支
master
并停止旧的master
分支
我该怎么做?
我看到我可以创建一个新分支 branch1
然后使用
$ git branch -m master old_master
$ git branch -m branch1 master
备份旧的master
,然后将新的分支重命名为master
,但我想知道这样做是否有任何缺点,以及是否有更好的方法来实现我的目标(无论 "better" 在这种情况下是什么意思)。
有什么想法或提示吗?
PS: 我想"revert"的改动已经推送了,不能直接删除
1.You 必须在您的主分支上硬重置为要回滚到
的 sha-idgit reset --hard <commit_id>
- 在进行推送时,您必须使用 -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 分支都需要硬重置。