我觉得我对git已经有了相当的了解,但是当涉及到repo命令时,我就迷失了。我已经读过有关 repo 命令的内容,但我仍然不确定它如何将所有内容联系在一起。
我最大的问题是我可以将当前的分支从姜饼更改为 ICS 并可能返回吗?
我看到命令:
repo init -u https://android.googlesource.com/platform/manifest
根据我的理解,这将使用主分支创建一个存储库。如果我想指定分支,我可以这样做:
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
我相信下载量约为 8GB,所以如果他们共享代码,我不想毁掉我的存储库。有没有办法在仓库中切换分支?
如果您使用不同的分支第二次运行
repo init
,您可以简单地repo sync
,它不会再次下载整个源代码。
repo -b 参数指定应签出的 .repo/manifests git 存储库的分支。此存储库中的 default.xml 文件定义了其他每个 git 存储库(项目)应位于哪个分支。
似乎回购协议的编写方式是这样的:如果您再次检查另一个清单分支是否同步回购协议,它将再次通过网络拉取所有代码。
您可以运行
repo forall -c 'git checkout branch_name'
,它将检出当前清单中声明的所有项目的指定分支,但如果在姜饼和 ics 之间添加/删除了项目(确实存在),那么您将无法获得以下代码这些项目。
在 .repo/manifests 存储库中运行 git checkoutbranchname,然后运行 reposync 可能会节省一些网络开销。
否则,由于repo的限制,唯一真正的方法是维护aosp的两个工作副本或准备重新同步。