我正在做一个项目,我有一个中央 git repo。这个项目是一个框架,可以作为许多分叉的基线。
是否可以为分叉配置我的本地工作存储库以跟踪项目的中心作为起源并将骨架的主控作为名为上游的单独分支跟踪骨架的主控以挑选对骨架的更改?
我想我希望我的工作流程是这样的:
创建骨架 >> Fork Skeleton >> Skeleton Pulls Changes from Fork 2 >> Fork 1 Pulls Changes from Skeleton
有没有更好的流程来做我所描述的事情?
我正在做一个项目,我有一个中央 git repo。这个项目是一个框架,可以作为许多分叉的基线。
是否可以为分叉配置我的本地工作存储库以跟踪项目的中心作为起源并将骨架的主控作为名为上游的单独分支跟踪骨架的主控以挑选对骨架的更改?
我想我希望我的工作流程是这样的:
创建骨架 >> Fork Skeleton >> Skeleton Pulls Changes from Fork 2 >> Fork 1 Pulls Changes from Skeleton
有没有更好的流程来做我所描述的事情?
阅读 GitHub“Fork a Repo”页面的“第 3 步:配置遥控器”(我知道你没有提到 GitHub,但它仍然是相关的)
origin是你的 fork 的远程地址,你的本地克隆可以从中提取/推送到upstream是您原始仓库的远程地址Skeleton(您可以添加它git remote add upstream https://..../Skeleton.git)所以上游不是一个分支。
但是您可以使用git branch定义一个本地分支,该分支将为上游分支提供来自上游 repo 的远程跟踪分支 master :
git branch --set-upstream upstream_master upstream/master
但是,您不需要本地分支,特别是如果您永远不会在其上进行新提交:您可以upstream/master直接将您的git fetch upstreammaster与upstream/master.
根据您的描述,每当骨架发生变化时,您都应该使用
$ 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
换句话说,您的分叉看起来就像是从最新版本的骨架中分叉出来的。
这种方法的缺点是它改变了分叉的历史......如果你不想要这个,你可以将上游合并到分叉中(我认为不需要挑选)。