进行简单的获取和合并会导致许多冲突,但没有影响我正在调试的驱动程序。如问题所示,我真的想将要合并的提交限制为那些影响此特定驱动程序的提交。
我找到了一种方法来实现这一点。关键是git cherry-pick命令。
首先将上游存储库添加为远程,并从中提取:
git remote add wireless-testing git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
git fetch wireless-testing
现在我有两个远程库,
origin
(最初克隆的RPi内核仓库)和
wireless-testing
,这是我想要拉取更改的上游仓库。
接下来,检出您要从中开始的原始分支(在我的情况下为RPi rpi-3.17.y分支),并基于它创建一个新的本地分支:
git checkout rpi-3.17.y
git checkout -b rtlfix
现在,要获取无线测试存储库上超前于我的分支的提交列表,但仅考虑影响特定目录树的提交:
git log wireless-testing/master ^HEAD -- drivers/net/wireless/rtlwifi
这意味着“显示从wireless-testing/master的头开始到当前本地分支的头停止的提交日志,并仅考虑drivers/net/wireless/rtlwifi目录下的文件/目录”。
确认这确实是您想要的列表后,您可以使用cherry-pick命令进行应用:
git rev-list --reverse wireless-testing/master ^HEAD -- drivers/net/wireless/rtlwifi | git cherry-pick --stdin
第一条命令按相反的顺序输出提交列表,然后将它们传输到 cherry-pick 命令中,该命令会应用给定的提交。
这种方法有一些注意事项。其中一个是,如果您采取的任何提交依赖于其他未采取的提交所做的更改,则最终会得到无法编译和/或工作的软件。您可能需要引入其他提交来解决这些问题。