使用 Android Studio 从包含 Android 应用程序的仅 Git 子文件夹中签出作为新项目

Dim*_*Dim 5 git android-studio

我有一个现有的 git 存储库,其结构如下:

Mobile_Application
-android-app
-ios-app
-paying-services
Run Code Online (Sandbox Code Playgroud)

我想在我的 Android Studio 版本 3.0.1 中查看新项目,仅查看android-app文件夹中包含的内容。我尝试签出整个项目,并提取了所有文件夹的内容,但根本无法构建 android 项目。是否可以仅将android-app文件夹作为新项目签出?

Sto*_*eev 1

这些子项目在内部是否有某种联系?他们是否共享某些东西 - 测试、库、CI 设置或您需要在不同子项目中重用的任何其他内容?他们互相依赖吗?

\n\n

如果这些问题的答案是“否”,那么您所做的事情就是错误的。

\n\n

我不太确定为什么你有这个带有子项目的单一存储库,但这就是我建议你的:

\n\n

选项 1:为每个子项目创建三个独立的 git 存储库,然后仅签出 Android 存储库。然后你就会解决你所有的问题。这更加专业,并且可以使事情分开且简单。另外,您不需要任何奇怪的 git hub 命令来检查您的 Android 子项目。后来,当所有这些子项目长大并且许多开发人员开始同时处理它们时,让它们像一个大存储库一样,可能会产生问题、限制和混乱。每个项目单独的 git 存储库不需要任何费用!

\n\n

选项 2:使用一些 git 工具来签出 monolit 存储库,但不能直接使用 Android Studio(简单的 git 终端或 SourceTree 或任何其他 git UI 应用程序(编辑器))。签出存储库后,打开 Android Studio,选择 \xd0\xbepen 现有项目并导航到 Android 项目目录 (android-app)。这将使您可以选择仅在 Android Studio 中加载 Android 部分。当然,这有很大的缺点,因为在这种情况下您绕过了 Android Studio git 工具,但您仍然可以使用外部 git UI 应用程序(一开始用于签出项目的应用程序)来推送、拉取等。

\n\n

选项 3:在 git 中使用称为“稀疏结帐”的东西。可以通过以下方式实现:

\n\n
git init <repo>\ncd <repo>\ngit remote add origin <url>\ngit config core.sparsecheckout true\necho "android-app/*" >> .git/info/sparse-checkout\ngit pull --depth=1 origin master\n
Run Code Online (Sandbox Code Playgroud)\n\n

请看这里,了解 git稀疏结账 的完整正确解释。

\n\n

您可以从这里获得更多信息或不同的方法

\n\n

如果您的客户想要包含所有项目的单个存储库,请尝试说服他,这不会带来任何好处,但只会增加复杂性,这是错误的。

\n\n

我希望这能帮助您解决问题,但我个人推荐选项 1。这是正确的方法,而且不需要任何成本,除非您有任何反对意见,但我对此表示怀疑:)。

\n\n

祝你好运

\n