Git跟踪上游

时间:2012-06-12 20:17:54

标签: git git-branch git-remote

我正在开展一个项目,我有一个中央git仓库。该项目是一个骨架,可作为许多分叉的基线。

是否可以为fork配置我的本地工作存储库以跟踪项目的中心作为原点并跟踪骨架的master作为一个名为upstream的单独分支跟踪骨架的主人,以挑选对骨架的更改?< / p>

我想我希望我的工作流程如下:

创建骨架&gt;&gt; Fork Skeleton&gt;&gt;骨架从叉2拉出变化&gt;&gt; Fork 1从Skeleton中拉出变化

有没有更好的流程来完成我所描述的内容?

2 个答案:

答案 0 :(得分:8)

阅读GitHub“Fork a Repo”页面的“Step 3: Configure remotes”(我知道你没有提到GitHub,但它仍然相关)

  • origin是您的分支的远程地址,您的本地克隆可以从/推送到
  • upstream是原始回购Skeleton的远程地址(您可以使用git remote add upstream https://..../Skeleton.git添加<)

所以上游不是分支。

但是您可以使用git branch定义一个本地分支,该分支将从上游分支上游分支远程跟踪分支主服务器:

git branch --set-upstream upstream_master upstream/master

但是,您不需要本地分支,特别是如果您不会对其进行新的提交:您可以在upstream/master之后直接将您的主人与git fetch upstream进行比较,从upstream/master中选择您需要的内容。

答案 1 :(得分:1)

根据你的描述,你应该使用

修改骨架上的分叉
$ git rebase upstream

这将改变以下情况

initially:
1 - 2 - 3 <- upstream
        \- 4 <- fork

upstream changes:
1 - 2 - 3 - 5 - 6 <- upstream
        \- 4 <- fork

after rebase:
1 - 2 - 3 - 5 - 6 <- upstream
                \- 4 <- fork

换句话说,你的fork看起来好像是从最新版本的骨架分叉出来的。

这种方法的缺点是它改变了分叉的历史......如果你不想要这个,你可以将上游合并到分叉中(我认为不需要挑选)。

相关问题