吉特:树枝还是叉子?


17

我有一个游戏项目,它将有两个版本:

  1. 游戏的一个简单版本,核心。
  2. 游戏的高级版本。

我的公共存储库中有第一个版本,只有我会进行处理。至于第二版,我的两个朋友将与我合作。关键部分是我希望这两个版本保留在我的存储库中。

我以为可以为此使用分支,但是考虑到这个问题及其答案,就版本控制而言,这不是一个好习惯。据我所知,不可能分叉自己的存储库。

我在这里有什么选择?如何将两个版本都保存在存储库中?


3
叉子是一个分支,仅存储在另一个位置。

@MichaelT好的。分叉是否打算在某些时候像分支一样合并?
Varaquilex 2014年

22
Fork是github概念,而不是git概念。它只是克隆并将其放入您的帐户。因此,克隆就是您要寻找的。参见stackoverflow.com/questions/6286571/git-fork-is-git-clone
pdr 2014年

@Varaquilex您是否需要将两个版本都保存在一个存储库中?此外,fork存储库还将在您的帐户中创建一个新的存储库。
Mahdi 2014年

1
为什么不只有一个可以在简单模式或高级模式下运行的版本?当然,代码的某些部分仅在简单状态下有效,而某些部分仅在高级状态下有效,但是我想可以共享很多内容。
bdsl

Answers:


11

在我看来,您需要两个存储库而不是两个分支。分支是一种机制,用于处理单个存储库中的更改,以便最终将其与其余代码合并。

如果您确实希望将相似代码库的两个版本都保留在同一存储库中,那么您唯一的选择是使用Branch,但是如前所述,branch的主要目的是以某种方式分隔一些特定的提交在开发期间它们不会与其余代码冲突,并在准备好使用时将它们合并。

在某些情况下,存储库具有两个略有不同的分支-例如,同一源代码的32位和64位版本,但是我仍然建议您选择单独的存储库,如果可以的话。


6

问题“我应该克隆还是分叉”的答案与问题“我想要我自己的项目的个人版本?”的答案完全相同。是=分支,否=克隆存储库。

在git中,branch是一种轻量级的东西,通常是临时的,可以删除。fork(在github上)是基于先前项目的新项目。您可以克隆存储库以团队成员的身份对其进行工作。

许多公共项目让您分叉该项目,以使工作更改不进入主项目。

在第2阶段中,派生该项目,然后将其克隆到您的工作计算机上,并让您的朋友也这样做。


我如何分叉自己的项目?
Varaquilex 2014年

在github中选择存储库,然后单击fork(对我而言右上角的按钮)
DwB

我知道该怎么做,就是当您尝试克隆自己的项目时,就像按刷新按钮一样,您只需重定向到存储库即可。在尝试创建自己的项目后浏览存储库时,没有列出其他存储库。我想我要制作一个新的存储库,复制我想分叉的另一个存储库的内容,然后继续与那里的其他人一起工作。
Varaquilex

0

真正听起来像您想要的是一个子模块。如果创建第一个存储库(您的私有简单存储库),然后将其作为子模块添加到高级版本存储库中,那么在开发私有简单存储库时,您应该能够跟踪并将更改应用于高级存储库中。


1
有几个人花了一些时间对-1 Ryan做出回应,但没有花时间提供评论原因,而且这种行为违背了SO准则的精神。如果在OP的问题中,“核心”在两棵树中都是相同的,并且在核心周围都有“简单”和“高级”包装,则此答案至少是合理的。
Scott Prive

我已经投票赞成,但他可能应该像您一样提供一个解释,解释为什么子模块会很好,以及它如何工作。将通用代码拆分为一个可以包含在子模块中的库是一个好主意,但是如果没有指定应执行的操作,则建议不要立即提出子模块的建议。
肖恩·伯顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.