如何在本地回购中切换android版本?

时间:2012-12-23 02:13:30

标签: android git tags repository git-checkout

我使用以下命令下载了整个工作树:

repo init -u https://android.googlesource.com/platform/manifest
repo sync -j8

同步成功后,我想将工作树切换到android 2.3.7。 你看到我在“repo init”时没有用“-b”参数指定分支。 所以我想所有标签信息都应该下载,我可以使用以下命令轻松切换到android 2.3.7:

repo forall -c git checkout android-2.3.7_r1

但它会产生许多错误,如:

error: pathspec 'android-2.3.7_r1' did not match any file(s) known to git.

那么如何在没有“repo init -b android-2.3.7_r1”和“repo sync”的情况下切换到android 2.3.7呢?

2 个答案:

答案 0 :(得分:21)

使用repo forall无法解决此问题。

让我们确定您当前的Android树是干净的 - 没有本地更改或提交,即repo status没有显示任何内容。

要正确切换Android版本,您需要更改的只是清单存储库的分支。首先确定具有不同Android版本的清单的可用分支:

cd $ANDROID_ROOT
cd .repo/manifests
git branch -av   # see all available branches on origin

选择版本和

cd $ANDROID_ROOT
repo init -b <my_selected_android_version>

这种具有repo init(不含-b)的选择性-u只会更新清单分支,否则不会触及您的树。

现在,只需同步它:

repo sync -j8

一段时间后,您的Android树将切换到另一个版本。

此操作的速度主要取决于新旧Android版本之间default.xml清单文件的差异程度 - 因为如果在新清单中添加了一些git存储库,则会花时间克隆它。如果删除了某个存储库,那么实际上是否会将其删除。

但是,总的来说,这种方法仍然比从头开始初始化全新的Android树快得多。

答案 1 :(得分:1)

如果您所在的分支机构和要切换到的分支机构具有相同的manifest.xml文件,那么您可以使用以下命令来执行此操作。

repo forall -c git fetch aosp --tags repo forall -c git checkout -b john5.1.1_r14_api22 android-5.1.1_r14

另见详情 http://johnliao52.github.io/2016/03/27/git-repo-skills.html