如何从另一个分支完全替换git中的master分支?

可能重复:
在git中将当前分支更改为master

我在git repo中有两个分支:

  • seotweaks(最初由主人创建)
  • 我创建seotweaks与快速合并它放回意向master ,但是这是3个月前,并在此分支的代码是提前13个版本的master ,它实际上已经成了我们的工作主分支中的所有代码master是多还是现在不太陈旧了。

    我知道很不好的做法,经验教训。

    你知道我怎样才能将master分支的所有内容替换为seotweaks所有内容?

    我可以删除master和merge中的所有内容,但这并不像最佳实践。


    你应该能够使用“我们的”合并策略来覆盖像这样的seotweaks的主人:

    git checkout seotweaks
    git merge -s ours master
    git checkout master
    git merge seotweaks
    

    结果应该是你的主人现在基本上是seotweaks。

    ( - -s ours是 - --strategy=ours简称)

    从关于'我们'战略的文件来看:

    这可以解析任意数量的头,但合并结果树始终是当前分支头的树,有效地忽略了来自所有其他分支的所有更改。 它是用来取代侧枝的旧发展历史。 请注意,这与递归合并策略的-Xours选项不同。


    如何使用git branch -m将主分支重命名为另一个,然后将seotweaks分支重命名为master? 像这样的东西:

    git branch -m master old-master
    git branch -m seotweaks master
    git push -f origin master
    

    这可能会删除原始主机中的提交 ,请在运行git push -f origin master之前检查您的git push -f origin master


    您可以重命名/删除远程主服务器上的主服务器,但如果很多人在远程主服务器分支上进行工作并将其分支放在其本地回购站中,这会成为问题。
    这可能不是这种情况,因为每个人似乎都在研究分支' seotweaks '。

    在这种情况下,您可以:
    git remote --show可能无法正常工作。 (做一个git remote show来检查你的远程在你的本地repo中是如何声明的,我会假设' origin ')
    (关于GitHub,house9评论:“我必须再做一个步骤,点击GitHub上的' Admin '按钮并将' Default Branch '设置为' master '以外的东西,然后再放回去。”)

    git branch -m master master-old  # rename master on local
    git push origin :master          # delete master on remote
    git push origin master-old       # create master-old on remote
    git checkout -b master seotweaks # create a new local master on top of seotweaks
    git push origin master           # create master on remote
    

    但是,

  • 如果其他用户在远程删除主设备时尝试拉取,则其拉取将失败(“没有这样的远程设置”)
  • 当主人在远程重新创建时,拉将尝试合并新的主人在他们的本地(现在是旧的)主人:很多冲突。 他们实际上需要reset --hard他们的本地主人到他们将要获取的远程/主分支,并忘记他们当前的主人。
  • 链接地址: http://www.djcxy.com/p/2769.html

    上一篇: How to replace master branch in git, entirely, from another branch?

    下一篇: Undo git pull, how to bring repos to old state