Git切换远程分支,同时保留添加的内容

时间:2014-01-03 09:15:55

标签: git version-control branch redmine fork

我们正在使用Redmine。我们开发了一个插件。我想将redmine代码库添加到我们自己的存储库中。因此允许我们从链接的上游存储库(redmine的git repo)中提取更改。如果我坚持使用redmine master分支,这是有道理的。但是,我想开发2.3-stable分支的插件。一旦我们将插件投入生产,那么我希望能够迁移到redmine 2.4等。沿途缓慢测试。与此同时,我们希望将整个repo(包括redmine文件)部署到我们的生产服务器。通过这种方式,我们可以开发插件并获得在本地运行的新版本的redmine,然后部署到我们的服务器,所有这些都应该可以正常工作。部署将使用capistrano进行。所以capitstrano文件也需要添加到我们的存储库中。

我试过的是检查我们的空存储库。将redmine存储库添加为上游,获取上游。然后我将插件添加到空插件目录并将文件添加到提交。我的问题是这是在主分支上。如果我在2.3-stable分支上执行相同操作,那么我无法将插件移动到另一个分支,因为合并2.3-stable与master将导致合并冲突。

接近此设置的最佳方法是什么?我是否有一个单独的插件分支和一些如何重新安装2.3-stable以包含插件。因此,在插件分支上进行开发,并使用我想部署的每个版本分支进行重新定位。

总结一下。基本上我想在保留插件开发的同时分叉repo但交换版本。

1 个答案:

答案 0 :(得分:0)

从一个版本移动到另一个版本时使用3分支rebase解决。在以下步骤中概述:

  1. 克隆Redmine回购

    git clone https://github.com/redmine/redmine.git

  2. 将原点重命名为上游

    获取远程重命名源上游

  3. 创建一个本地分支来跟踪上游分支

    git checkout --track upstream / 2.3-stable

  4. 创建一个本地分支来容纳其他工作,在我们的例子中是插件

    git checkout -b 2.3-stable-plugins

  5. 将您想要的内容添加到最后一个分支。

  6. 将所有分支推送到您自己的仓库。

    git remote add origin some-url

    git push origin all

  7. 转移到新的Redmine版本,即:原始存储库中的另一个分支。

    1. 签出新分支

      git checkout --track upstream / 2.4-stable

    2. 执行3分支rebase

      git rebase - 大多数2.4稳定2.3稳定2.3稳定插件

    3. 重命名2.3-stable-plugins分支以反映它现在实际上是2.4