我觉得我对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,所以如果他们共享代码,我不想让我的回购消失。有没有办法在回购中切换分支?
答案 0 :(得分:44)
如果您第二次使用其他分支运行repo init
,则只需repo sync
,它就不会再次下载整个源代码。
答案 1 :(得分:5)
repo -b参数指定应该检出的.repo / manifests git存储库的分支。此存储库中的default.xml文件定义了其他每个git repositiories(项目)应该在哪个分支上。
似乎repo是以这样的方式编写的:如果你检查另一个清单分支再次进行repo sync,它将通过网络再次提取所有代码。
您可以运行repo forall -c 'git checkout branch_name'
来检查当前清单中声明的所有项目的指定分支,但是如果在姜饼和ics(有)之间添加/删除了项目,那么您将不会获取这些项目的代码。
在.repo / manifests存储库中运行git checkout branchname,然后运行repo sync可以节省一些网络开销。
否则,由于repo的限制,唯一真正的方法是维护aosp的两个工作副本或准备重新同步。