具有2个永不合并的分支的项目的git策略

时间:2014-07-07 18:47:14

标签: git branch git-fork

注意:请立即参阅编辑部分以获得更好的解释

我刚开始使用 GIT ,所以如果我不使用正确的术语(仍在学习),我会提前道歉。

我正在使用 BitBucket ,因为现在我只想要私人项目。

我想知道执行以下操作的最佳策略是什么:

我有一个适用于Android的 Phonegap / Cordova 应用(因此它主要是HTML + JS)。现在,我想使用该项目来创建iOS应用程序。大多数代码都是相同的,但是我将需要在代码中更改特定于平台的内容,以使其适用于iOS。

我的想法是能够:

  1. 制作Android版本的“分支”(或fork?),我可以编辑iOS所需的任何内容。这个brach永远不会合并回Android版本。

  2. 每当我更新Android版本时,都可以将这些内容合并到iOS分支中。

  3. 这样我总是可以将Android版本用作“主”,应用任何错误修复,新功能等,然后“自动将这些应用到iOS版本,同时保持其自己的平台特定代码行不受影响。” / p>

    所以我不确定我是否需要在概念上如何设置和使用GIT这个项目,所以我可以将这些分支保持分离,因为当涉及到分支时我一直在关注的东西似乎最终通过将它们合并到主人身上,这正是我不想做的事情。

    当然我可以手动完成所有这些操作,但如果我可以用它来学习GIT,那将是一个很好的方式,也很有用!

    提前致谢!

    ------->修改

    我收到的答案都是好主意,但我认为我没有很好地解释自己,所以我会尝试使用另一个例子。原因是我认为我的想法可以用于许多其他项目,而不仅仅是我上面解释的项目,所以我真的想知道它是否可能以及如何。

    这是另一个例子:

    让我们考虑一下AOSP(Android开源项目)以及数百名开发人员创建的所有自定义ROM。它们都使用相同的源(AOSP或其变体),克隆它,并将它们的自定义修改添加到它们自己的存储库中的OS。然后,只要AOSP源中有更新,他们只需要“更新”他们的克隆,但保留他们已经实现的任何内容。

    按照我的第一个例子的比喻,我的Android应用程序将是AOSP源代码,我的iOS应用程序将成为克隆。

    所以也许我应该以某种方式使用2个存储库?还是分店/叉子?那是困扰我的那部分......

2 个答案:

答案 0 :(得分:0)

我认为您将源代码控制(git)与构建配置(您使用的构建工具)混淆。为什么不创建两个文件夹,/ android和/ ios,并将平台特定的东西放在那里?

答案 1 :(得分:0)

Android应用和ios应用会分享任何文件吗?

如果没有,我建议为每个项目推荐两个单独的存储库。

是否共享了大量文件?

如果是这样,请为每个项目使用一个存储库和离散文件夹:

my-awesome-project/
 |____ docs/
   |____ readme.md
 |____ site/
   |____ index.html
 |____ shared/
   |____ my-app.rb
 |____ ios/
   |____ xcode stuff
 |____ android/
   |____ cordova/phonegap stuff