【问题标题】:Git switch remote branch whilst keeping added contentGit 切换远程分支,同时保留添加的内容
【发布时间】:2014-01-03 09:15:54
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: git version-control branch redmine fork


    【解决方案1】:

    从一个版本移动到下一个版本时使用 3 个分支变基解决了问题。概括如下:

    1. 克隆Redmine回购

      git 克隆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 远程添加源 some-url

      git全部推送源

    要迁移到新的 Redmine 版本,即:原始存储库的另一个分支。

    1. 签出新分支

      git checkout --track upstream/2.4-stable

    2. 执行 3 个分支的变基

      git rebase --onto 2.4-stable 2.3-stable 2.3-stable-plugins

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      相关资源
      最近更新 更多