如何在不丢失添加的代码的情况下将内核源代码更新为更新的内核源代码?

How can I update kernel source to newer one without losing added code?

我有一份 android 内核源代码的快照,我在其中添加了一些功能。 现在我有制造商发布的更新版本的源代码。如何在不丢失更改的情况下更新我的源代码? 如果我使用

diff -Naur old/ new/ > new1.patch

"" 然后通过

应用补丁
patch -p1 < new1.patch

我将丢失旧源代码中可用的修改代码和额外文件 但是如果我使用

diff -Naur new/ old/ > new2.patch

它保留了我修改的代码和额外的文件,但我不知道源是否更新了。有什么解决办法吗?也许使用 git 变基或合并?谢谢

我的理解是否正确:您有制造商提供的内核版本,您对其进行了自己的修改?

那你想升级你的内核版本,但是还有你的修改?

最自然的方式是使用分支和合并。例如,您可以根据制造商的交付更新您的分支 master,并维护一个分支 my_code_branch(当然,您需要一个比这更好的分支名称),您将合并上游内核更新。

a---b---c---d - master (from manufacturer)
             \
              +---x - my_branch (your own changes)

然后,当您的制造商进行升级时,您可以通过以下方式更新您的母版:

$ git checkout master
$ git pull origin master # or whatever your remote is called

并得到:

a---b---c---d---e - master (from manufacturer)
             \
              +---x - my_branch (your own changes)

然后将制造商的更改合并到您自己的分支中:

$ git checkout my_branch
$ git merge master

获得:

a---b---c---d---e---+ - master
             \       \
              +---x---y - my_branch

如果不需要本地master分支,也可以留在my_branch直接pull:

$ git pull origin master   # while on my_branch

请注意,您也可以反其道而行之:您在 master 中的代码同时维护一个分支 manufacturer,您可以与制造商保持同步。