使当前的Git分支成为主分支
我在Git有一个仓库。 我做了一个分支,然后对主人和分支做了一些改变。
然后,数十次提交后,我意识到分支比主分组状态要好得多,所以我希望分支“成为”主,而忽略主分支上的变化。
我无法合并它,因为我不想将更改保留在master上。 我该怎么办?
额外:在这种情况下,'旧'主控已经push
送到另一个仓库,比如GitHub。 这是如何改变的?
另外两个答案的问题是,新主人没有老主人作为祖先,所以当你推它时,其他人都会搞砸。 这是你想要做的:
git checkout better_branch
git merge --strategy=ours master # keep the content of this branch, but record a merge
git checkout master
git merge better_branch # fast-forward master up to the merge
如果你希望你的历史更清晰一点,我建议在合并提交信息中添加一些信息,以清楚你所做的事情。 将第二行更改为:
git merge --strategy=ours --no-commit master
git commit # add information to the template merge message
确保所有内容都推送到远程存储库(GitHub):
git checkout master
用“better_branch”覆盖“master”:
git reset --hard better_branch
强制推送到远程存储库:
git push -f origin master
编辑:你没有说你推到公共回购! 这使得世界有所不同。
有两种方式,“肮脏”的方式和“干净”的方式。 假设你的分支被命名为new-master
。 这是干净的方式:
git checkout new-master
git branch -m master old-master
git branch -m new-master master
# And don't do this part. Just don't. But if you want to...
# git branch -d --force old-master
这将使配置文件更改为匹配重命名的分支。
你也可以这样做,不会更新配置文件。 这就是上面提到的那种......
mv -i .git/refs/new-master .git/refs/master
git checkout master
链接地址: http://www.djcxy.com/p/1157.html
上一篇: Make the current Git branch a master branch
下一篇: Why can't a function take a type constrained only by a typeclass?