0

过去几周我一直在研究 Android 源代码。

在平台/构建存储库中,我检查了 android-4.0.4_r2.1 标记。这成了我的“ics”分支。现在,当针对 android-4.1.1_r1 标记进行合并或变基时,我在从未编辑过的文件中遇到合并冲突。

这些是有问题的存储库(和标签):

https://android.googlesource.com/platform/build/+/android-4.0.4_r2.1

https://android.googlesource.com/platform/build/+/android-4.1.1_r1

这是从第一个标签分叉的分支,我试图将后一个标签合并到:

https://github.com/slimdroid/platform_build/commits/ics

我完全不知道是什么原因造成的。我不是 git 的初学者,但我不明白当应该有一个共同的基础时,我如何不能在不冲突的情况下合并这个标签。

有关信息,我的冲突在 core/build_id.mk 中指定 BUILD_ID 的行中。

4

2 回答 2

2

我将在这里复制 Jean-Baptiste 的回答,他是为 Google 做 AOSP 的人:

你没有做错什么。

您所看到的是 Google 内部开发过程的产物。

在某个时候,当我们准备 Jelly Bean 的第一个版本时,ICS 脱离了 Google 的主要合并流程。尽管如此,仍然有一点 ICS 活动,在 git 级别并没有合并到 Jelly Bean 中。这就是您在此处看到的:最新版本的 ICS 中有一些更改不在 Jelly Bean 中,而尝试将最新的 ICS 重新定位到 Jelly Bean 上会使这些更改脱颖而出。

检查“repo forall platform/build -c git log android-4.1.1_r1..android-4.0.4_r2.1” - 这会发现让你感到惊讶的提交。

JBQ

于 2012-07-20T19:39:22.460 回答
1

我在 git 方面并不先进,所以我在这里可能完全错了。但我理解你的假设是第一个标签指向的提交是另一个标签的祖先。只有在这种情况下,您才能保证它们之间不会发生合并冲突。

您可以通过执行git merge-base first-tag second-tag.

于 2012-07-20T16:16:25.237 回答