执行AOSP repo sync时出现tag冲突错误,如何解决?
我之前也碰到过一模一样的repo sync报错,这是因为本地仓库里的tag和远程仓库的同名tag内容不一致,Git默认不允许直接覆盖本地已存在的tag导致的。给你几个可行的解决办法:
先再明确下你遇到的报错内容:
From https://android.googlesource.com/platform/external/dtc
! [rejected] android-q-preview-1 -> android-q-preview-1 (would clobber existing tag)
! [rejected] android-q-preview-4 -> android-q-preview-4 (would clobber existing tag)
! [rejected] android-q-preview-5 -> android-q-preview-5 (would clobber existing tag)
! [rejected] android-q-preview-6 -> android-q-preview-6 (would clobber existing tag)
error: Cannot fetch platform/external/dtc
warn: --force-broken, continuing to sync
方法一:单个仓库处理(针对external/dtc)
- 进入出问题的仓库目录:
cd external/dtc - 删除本地冲突的所有tag:
git tag -d android-q-preview-1 android-q-preview-4 android-q-preview-5 android-q-preview-6 - 回到AOSP根目录,重新执行sync:
repo sync
方法二:全局强制同步tag(适合多仓库出现同类问题)
如果后续还有其他仓库出现类似tag冲突,可以直接用repo的强制同步tag参数,一次性处理所有冲突:
repo sync --force-sync-tags
这个参数会强制覆盖本地与远程不一致的tag,比单个仓库处理更高效。
方法三:删除仓库重新拉取(极端情况)
如果前面两种方法都无效,可以直接删除出问题的仓库目录,让repo重新拉取完整内容:
rm -rf external/dtc repo sync
内容的提问来源于stack exchange,提问作者a body




