签出旧的提交并创建一个新的主分支?

时间:2015-04-04 05:22:30

标签: git github branch git-branch

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

  • 结帐较旧的提交
  • 使用新分支将事情发展到不同的方向
  • 调用此新分支master并停止旧的master分支

我该怎么做?

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

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

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

有任何想法或提示吗?

PS:我想要的变化"还原"已被推,所以我不能删除它们。

2 个答案:

答案 0 :(得分:1)

1.您必须在主分支上重置为要回滚的sha-id

git reset --hard <commit_id>
  1. 在执行推送时,您必须使用-f选项
  2. 您也可以尝试执行 git revert 而不是git reset

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

答案 1 :(得分:1)

你说的方法真的很好。只有在您可以放弃开发历史时才使用硬重置。

基本上,请执行以下操作

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

完成后,您需要强制推送主人(因为您的本地分支历史记录与远程分支历史记录完全不同)

git push -f origin master

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

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

强制推送和(可能)重建主分支都需要进行硬重置。