Jia*_*Liu 16 tags git android repository git-checkout
我使用以下命令下载了整个工作树:
repo init -u https://android.googlesource.com/platform/manifest
repo sync -j8
Run Code Online (Sandbox Code Playgroud)
同步成功后,我想将工作树切换到android 2.3.7.你看到我在"repo init"时没有用"-b"参数指定分支.所以我想所有标签信息都应该下载,我可以使用以下命令轻松切换到android 2.3.7:
repo forall -c git checkout android-2.3.7_r1
Run Code Online (Sandbox Code Playgroud)
但它会产生许多错误,例如:
error: pathspec 'android-2.3.7_r1' did not match any file(s) known to git.
Run Code Online (Sandbox Code Playgroud)
那么如何在没有"repo init -b android-2.3.7_r1"和"repo sync"的情况下切换到android 2.3.7呢?
mvp*_*mvp 21
你无法解决这个问题repo forall.
让我们确定您当前的Android树是干净的 - 没有本地更改或提交,即repo status没有显示任何内容.
要正确切换Android版本,您需要更改的只是清单存储库的分支.首先确定具有不同Android版本的清单的可用分支:
cd $ANDROID_ROOT
cd .repo/manifests
git branch -av # see all available branches on origin
Run Code Online (Sandbox Code Playgroud)
选择一个版本和
cd $ANDROID_ROOT
repo init -b <my_selected_android_version>
Run Code Online (Sandbox Code Playgroud)
这种选择性repo init有-b(无-u)将只更新清单分支,否则不会碰你的树.
现在,只需同步它:
repo sync -j8
Run Code Online (Sandbox Code Playgroud)
一段时间后,您的Android树将切换到另一个版本.
此操作的速度主要取决于default.xml新旧Android版本之间清单文件的差异 - 因为如果在新清单中添加了一些git存储库,则会花时间克隆它.如果删除了一些存储库,那么实际上是否会将其清除掉.
但是,总的来说,这种方法仍然比从头开始初始化全新的Android树快得多.