我有一个包含开源iOS框架的存储库。目前有两个分支:master
和develop
。
master
包含我的框架的当前版本,现在已经过时了。 develop
包含新版本,可以“发布”。
现在,我想在develop
正式版上制作新版本,所以我想把它移到master
。通常,我会使用从develop
到master
的简单合并。但是,develop
和master
之间有相当多的API更改,因此我遇到了很多合并冲突。
在深入研究这些冲突之前,我想知道是否有更好的方法可以切换master
和develop
。这两个版本是完全不同的,所以我不关心正确移动更改。向后兼容性并不是真正的问题,只需切换即可。
我知道git branch -m <old> <new>
:我可以重命名 master
到v1.4
和develop
到master
(并创建一个新的来自新develop
的{{1}},但我不确定这是否可行。它在本地工作正常,但我不知道一旦我推送到Github,这将如何影响下游用户。
那么,master
是否可以,或者我应该咬合并子弹?或者还有其他方式吗?
答案 0 :(得分:0)
您可以重命名它们,也可以更新每个分支以包含另一个分支的内容。这两个动作之间的唯一区别是reflog会发生什么。假设你不在乎,那么是的,你可以将一个重命名为另一个。或者您可以使用git reset
更改签出的分支,或git update-ref
,这基本上是git branch -m
下面的机制。
最简单的方法可能是使用git branch -m
。
答案 1 :(得分:0)
是的,从技术上讲,您可以将分支设置为git reset
或git branch -m
的任何提交,但我认为您应该首先考虑 含义 你的分支机构。
根据您的描述,您拥有不同版本的软件。一个旧的,当前由您主分支跟踪,另一个是由您的开发分支跟踪的新分支。
如果有人知道您的旧版本并希望对其进行操作,那么他将检查您的主分支并期望它包含旧版本。如果您现在只需将主设置为 develop 分支(无论是合并还是重置),这将非常激怒任何期望获得旧版本的人。
如果您曾想过将分支指针移动到完全不同的提交,通常意味着您没有良好的分支概念。 - 也许您应该将主分支称为 current-stable 。然后,一旦新的稳定版本可用,将它重置为新的提交是有意义的。
但这完全取决于你的发展方式。也许每个稳定版本都有一个开发分支一个分支,并且每当新版本准备就绪时,预计会跳转一个当前稳定的分支。