Git - 如何使用特定的远程分支作为存储库的上游源?

时间:2013-09-12 20:50:05

标签: git workflow branching-and-merging

也许我在想一个糟糕的工作流程,但是我们走了。我有一个项目,我想用作其他项目的基础,因为它们都保持相同的结构并共享公共类。这样的基础项目存储在自己的Git存储库中(我们称之为 MyBaseRepo ),其中存在两个分支:

  • master ,包含项目的精简版本。
  • mybranch ,包含master中包含的所有内容,以及更具体的类。

我想做的是以下内容:

  • 创建一个新项目,例如 MyNewProject ,克隆 MyBaseRepo 中的两个分支之一。
  • 创建一个新的 MyNewProjectRepo Git存储库作为新项目的源。
  • 将与 MyNewProject 实施相关的所有更改推送/拉到 MyNewProjectRepo
  • MyBaseRepo 更新时,从相应的分支中获取更改。

简而言之,我想实现某种“存储库继承”,这样当基类更改时,子项目就可以获得更新。

到目前为止,我几乎可以通过在需要时获取 MyBaseRepo ,然后将相应的 MyBaseRepo / branch MyNewProject master(或者无论 MyNewProject 分支)。这是正确的做法,还是让我的生活变得更加复杂?提前感谢您的答案。

1 个答案:

答案 0 :(得分:0)

我认为你描述问题的方式(除了两个分支部分),你可以使用git submodules。有了它,项目的每个修订版都将绑定到子模块的特定修订版。

如果你真的需要MyBaseRepo的那两个分支,我会这样做:

  • 初始化空仓库:

$ git init

  • 提交初始化master

  • 将远程MyBaseRepo添加到新的repo:

$ git remote add MyBaseRepo the_repo_location $ git fetch MyBaseRepo

  • 然后,在需要时,合并:

$ git merge MyBaseRepo/master

$ git merge MyBaseRepo/mybranch

但我会选择子模块。这是一个“更清洁”的解决方案 - 您只需要更新子模块,而不是从远程分支合并。