我有一个现有的git存储库,其结构如下:
Mobile_Application
-android-app
-ios-app
-paying-services
我想在我的Android Studio 3.0.1中查看新项目,只包含android-app
文件夹中的内容。我试图检查整个项目,我拉了所有文件夹的内容,但根本无法构建android项目。
是否可以仅将android-app
文件夹作为新项目结帐?
答案 0 :(得分:1)
好的,我知道你想要什么,我会尽力给你最完整的答案,你可能会在路上学到一些关于git的东西:
让我们假设您的存储库有一个远程存储库,即您通过git clone <remote-url>
从现有远程存储库克隆存储库。如果没有,请确保它已经“推”到某个遥控器。
运行以下命令将当前存储库配置为允许稀疏结帐:
git config core.sparsecheckout true
然后,在 git bash
内运行以下命令,以指定要保留在工作树中的路径(“checkout的花哨术语“):
echo android-app/ >> .git/info/sparse-checkout
非常重要您在
git bash
提示符下运行此命令,请勿使用PowerShell / CMD执行此操作,否则生成的文本文件可能使用BOM标记以Unicode编码,而git
会抱怨典型的“error: Sparse checkout leaves no entry on the working directory”
(你被告知了!)
然后运行以下命令更新索引和工作树:
git read-tree -mu HEAD
瞧,您的工作树应该只包含来自存储库根目录的android-app/
文件夹!
答案 1 :(得分:1)
这不是正式的方式或正确但你可以尝试这种方式在Android中打开终端。在提交它之前的所有内容。
git branch
* master
git add .
git commit -m " your suitable comment"
保护您当前的代码。
git checkout -b new-branch
git branch
master
* new-branch
删除您提到的new-branch
上不需要的文件夹
-ios-app
-paying-services
现在再次提交它。
git add .
git commit -m "init"
现在,如果你有以前的提交sha列表,如果你不想显示所有这些,你可以这样做。
git log --oneline -1
sha1
git reset --hard sha1
现在你只在android-app
中包含的新分支Mobile_Application
-android-app
您的任务已完成!您想要的是什么,但如果您想要当前的分支。您可以删除上一个分支。
git branch -d master
git branch
* new-master
如果您希望当前new-branch
为主
git branch -m master
git branch
* master
答案 2 :(得分:1)
这些子项目是否在内部以某种方式连接?他们是否共享某些东西 - 测试,库,CI设置或您需要在不同子项目中重用的任何其他东西?他们互相依赖吗?
如果这些问题的答案都是“不”,那么你所做的事情是错误的。
我不是绝对确定你为什么要在里面有子项目的这个单一回购,但这是我建议你的:
选项1 :创建三个关于每个子项目的git存储库,然后检查Android项目。然后你会解决你所有的问题。这更专业,它使事物分离和简单。另外,您不需要任何奇怪的git hub命令来检查您的Android子项目。后来当所有这些子项目都成长起来并且许多开发人员同时开始研究它们时,让它们像一个大的存储库一样,可能会产生问题,限制,限制和混乱。每个项目的单独git仓库不需要任何费用!
选项2:使用一些git工具来检查monolit存储库,但不能直接检查Android Studio(简单的git终端或SourceTree或任何其他git UI应用程序(编辑器))。签出存储库后,打开Android Studio,选择现有项目并导航到Android项目目录(android-app)。这将为您提供在Android Studio中仅加载Android部分的选项。当然这有很大的缺点,因为在这种情况下你绕过了Android Studio git工具,但你仍然可以使用你的外部git UI应用程序(你在开始时用来检查项目的那个)来推送,拉动等等。 / p>
选项3:在git中使用名为“sparse checkout”的内容。它可以通过这种方式实现:
git init <repo>
cd <repo>
git remote add origin <url>
git config core.sparsecheckout true
echo "android-app/*" >> .git/info/sparse-checkout
git pull --depth=1 origin master
看看here,看看git稀疏结账的完整正确解释。
您可以从here
获取更多信息或不同方法如果您的客户想要内部所有项目的单一回购,请尝试说服他,这不会带来任何好处,但它只会增加复杂性而且是错误的。
我希望这会帮助你解决问题,但我个人推荐选项1.这是正确的方式而且不需要任何费用,除非你有任何反对意见,但我怀疑:)。
祝你好运