当我已经分叉了另一个分叉时,我怎么能分叉原始仓库

T.J*_*der 60 github git-fork

我之前已经分叉了jockm/vert.x并向他发送了拉取请求.现在我想分叉vert-x/vert.x(jockm/vert.x的上游)并向它们发送不同的pull请求.但是,当我单击Fork按钮时,毫无疑问我最终会进入jockm/vert.x的tjcrowder/vert.x分支.是否可以同时分叉vert-x/vert.x和jockm/vert.x,以便我可以适当地发送每个pull请求?

我担心答案可能与关于相反情况的这个问题相同("没有GitHub方式,但你可以添加一个远程回购")但我希望不然 - 尤其是因为我看不出答案如何允许我向新的遥控器发送拉取请求.

Sig*_*gma 30

没有GitHub方式(小谎言,见下文),但也没有什么可担心的.

根据定义,fork的fork 原始的fork.当您打开拉取请求时,您可以选择拉取请求的原点和目的地.那里可用的选择显然取决于fork图,但只要两个存储库之间的图中有路径,就应该是安全的.此外,由于拉取请求存在于网站端,因此您甚至不需要添加远程,只要您不想从git使用它.

当然,你可能想重新考虑你在这个图中的位置,并让自己成为真正的上游的直接孩子,但这大多是无关的.

如前所述,实际上有一种扭曲的方式来拥有多个分支,即创建组织和分叉.这样,您就可以在同一个图表中"拥有"多个存储库.但实际上没有必要去那里.

  • 问题是当你然后PR到原始的回购时,它会把你不小心提交到同一个分支的所有废话都包含在内.重命名你的gunked up repo,然后分叉原始的/将比清理混乱更容易. (3认同)
  • 果然,如果我再做一次拉取请求,我可以选择将它发送到jockm/vert.x或vert-x/vert.x(或上游的许多其他分支中的任何一个).谢谢!我必须小心避免尝试将更改发送到实际特定于jockm/vert.x的vert-x/vert.x,但这就是分支的用途. (2认同)

T.J*_*der 13

感谢sigma的回答,我看到当我在jockm/vert.x repo上执行pull请求时,不仅上游repo可用,而且上游repo的所有其他分支也是如此.所以我最终做的是:

  1. 删除我的jockm/vert.x的分支,而不是分支vert-x/vert.x,因为我主要想在主要的上游仓库中工作,而不是jockm的版本.
  2. 为我想发送给jockm的提交创建一个分支,并为我想要发送给vert-x的提交创建一个单独的分支.
  3. 对每个分支进行相关更改.
  4. 将每个分支的拉取请求发送到相关的回购,因为jockm/vert.x repo被列为请求的可能目标(以及大约200个其他分支).

我使用了单独的分支(基本上是主题分支),因此这些提交仍然是那些拉取请求中唯一的东西,因为同一分支上的后续提交会自动添加到拉取请求中,并且这些更改需要保持隔离,直到/除非合并.


Dan*_*ain 5

看起来更好的选择是在fork上创建一个分支,并从该分支创建一个pull请求.您可以使用分支来"分叉"您的版本