git - 如何切换两个分支的内容?

时间:2012-12-16 09:17:16

标签: git github

我有一个包含开源iOS框架的存储库。目前有两个分支:masterdevelop

master包含我的框架的当前版本,现在已经过时了。 develop包含新版本,可以“发布”。

现在,我想在develop正式版上制作新版本,所以我想把它移到master。通常,我会使用从developmaster的简单合并。但是,developmaster之间有相当多的API更改,因此我遇到了很多合并冲突。

在深入研究这些冲突之前,我想知道是否有更好的方法可以切换masterdevelop。这两个版本是完全不同的,所以我不关心正确移动更改。向后兼容性并不是真正的问题,只需切换即可。

我知道git branch -m <old> <new>:我可以重命名 masterv1.4developmaster(并创建一个新的来自新develop的{​​{1}},但我不确定这是否可行。它在本地工作正常,但我不知道一旦我推送到Github,这将如何影响下游用户。

那么,master是否可以,或者我应该咬合并子弹?或者还有其他方式吗?

2 个答案:

答案 0 :(得分:0)

您可以重命名它们,也可以更新每个分支以包含另一个分支的内容。这两个动作之间的唯一区别是reflog会发生什么。假设你不在乎,那么是的,你可以将一个重命名为另一个。或者您可以使用git reset更改签出的分支,或git update-ref,这基本上是git branch -m下面的机制。

最简单的方法可能是使用git branch -m

答案 1 :(得分:0)

是的,从技术上讲,您可以将分支设置为git resetgit branch -m的任何提交,但我认为您应该首先考虑 含义 你的分支机构。

根据您的描述,您拥有不同版本的软件。一个旧的,当前由您分支跟踪,另一个是由您的开发分支跟踪的新分支。

如果有人知道您的旧版本并希望对其进行操作,那么他将检查您的分支并期望它包含旧版本。如果您现在只需将设置为 develop 分支(无论是合并还是重置),这将非常激怒任何期望获得旧版本的人。

如果您曾想过将分支指针移动到完全不同的提交,通常意味着您没有良好的分支概念。 - 也许您应该将分支称为 current-stable 。然后,一旦新的稳定版本可用,将它重置为新的提交是有意义的。

但这完全取决于你的发展方式。也许每个稳定版本都有一个开发分支一个分支,并且每当新版本准备就绪时,预计会跳转一个当前稳定的分支。