2

试图在这里解决这个问题。尝试将最新的 linux 3.0 更改 (3.0.41) 合并到我正在基于 HTC 源 (3.0.8) 处理的内核项目中。我下载了源代码,提交了基本文件,将 linux-stable 树添加为远程,并尝试将其与“git merge linux-stable/linux-3.0.y”合并。在回复中,我得到:

错误:未跟踪的工作树文件“Documentation/DocBook/dvb/dvbstb.pdf”将被合并覆盖。中止

这是 .gitignore 中的一个文件。如果我 git add -f 该文件,它只会与 .gitignore 中的下一个文件出错。有没有办法让我干净地合并这个没有这些错误?我不想通过提交来提交,因为会有成千上万的提交要合并。

4

1 回答 1

0

首先,如果你能找到 HTC 源代码作为现有的 git 存储库,你会好很多。手动构建的树中缺少适当的 git 历史记录不可避免地会导致冲突。HTC 源代码实际上是 vanilla Android 的一个分支,它(可能)是 vanilla Linux 的一个分支,但是没有完整的历史记录,git 只能尝试有效的双向合并,因为它没有共同的祖先为了进行适当的三向合并。所以除非你是一个经验丰富的内核程序员,能够处理这些冲突,否则我预计你会遇到很大的困难。

无论如何,如果无法获得完整的历史记录,您的树将没有共同的根,因此您需要咨询如何加入两个没有共同根的 git repos,所有修改的文件都相同?.

关于这个.gitignore问题,如果您有在 3.0.8 树中被忽略但在 3.0.41 三中被跟踪的文件,那么听起来.gitignore每个树中的文件之间不匹配,所以您应该比较它们,尝试找出为什么,并决定应该跟踪什么,不应该跟踪什么。 git blame .gitignore在 3.0.41 树中可能对此有所帮助。3.0.41 树将是两个存储库中更权威的,因为它具有完整的历史并且内部自洽,因此您可以尝试.gitignore在初始导入提交之前将其移植到 3.0.8 树中。另请注意,.gitignore树中的任何地方都可能有文件,而不仅仅是在顶层(我不知道 Linux 内核是否这样做)。

于 2012-08-25T09:46:10.147 回答