2015-04-04 40 views
1

看来,我的一个项目的master分支进入了一个完全错误的方向。因此,我想要做的是:签出一个较旧的提交并创建一个新的主分支?

  • 结帐旧的承诺
  • 使用一个新的分支
  • 把这种新的分支master开发的东西进入一个不同的方向,并停止旧master分支

我该怎么做?

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

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

备份旧master,然后新的分支重新命名为master,但我不知道是否有任何缺点在此,以及是否有更好的方法来实现我的目标(在这种情况下“更好”意味着什么)。

任何想法或提示?

PS:我想要“恢复”的更改已被推送,所以我不能只删除它们。

+2

你说的方法真的很好。使用硬重置也是可以的,如果你打开这个开发历史直到那一点。 – 2015-04-04 10:33:22

+0

@mu无如果你把它变成答案,我会接受它。 – 2015-04-04 14:46:37

回答

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 

强制推送和(可能)重新创建主分支将需要与硬重置以及。

1

1.You必须在master分支硬复位到要回滚到

git reset --hard <commit_id> 
的SHA-ID
  • 一边做推,你就必须使用-f选项
  • 您也可以尝试做一个混帐恢复,而不是混帐重置

    PS:如果你想保留历史周围,你可以标签M带标签名称的aster分支,甚至创建一个名为master_old的分支

    相关问题