linux - 什么 git 操作将我的更改从内核 3.14.y 移植到 3.15.y?

标签 linux git merge kernel rebase

我正在嵌入式项目中使用Linux内核。当我开始时,我使用 git 从 kernel.org 克隆当时的稳定版本 3.14.2。随着新的 3.14 内核发布,我可以使用 git rebase 升级到它们。例如,我通过使用升级到 3.14.10

git checkout linux-3.14.y
git pull
git checkout myproject
git rebase v3.14.10

但是,如果我尝试使用升级到3.15系列

git checkout linux-3.15.y
git pull
git checkout myproject
git rebase v3.15.3

git merge v3.15.3

我在从未接触过的文件上遇到 git merge 冲突。

是否有推荐的从 3.14.10 升级到 3.15.3 的方法?

最佳答案

这就是正在发生的事情。假设起始提交图如下所示:

                       -------------------------------------- myproject
                      /
                     /
         -----------/---------------------------------o------ linux-3.14.y
        /           C                             v3.14.10
       /                         B
  ----/---------------------------\-------------------------- master
      A                            \
                                    \
                                     --------------------o--- linux-3.15.y
                                                     v3.15.3

我不知道它到底是不是这样,但它说明了问题。

当 rebase 时,git 在历史记录中搜索属于当前分支和指定的“上游”分支的第一个提交。它收集所有这些提交以进行 rebase 操作。

当指定的“上游”是最初创建当前分支的分支时,收集的提交仅包括我自己在当前分支上的提交,因此不存在冲突。

当指定的“上游”不是最初创建当前分支的分支时(“git rebase v3.15.3”就是这种情况),收集的提交包括不是我自己的提交。在示例中,收敛点是提交 A,并且 rebase 操作将包括从点 A 到 myproject 的所有内容。 A 点和 C 点之间的那些可能不适合所需的操作。

相反,需要继续使用 linux-3.14.y 作为“上游”分支,以便识别哪些提交要 rebase ,但要指定一个单独的提交来将这些提交 rebase 。这就是“--onto”开关的用途。所以将myproject移植到v3.15.y内核所需的操作是

git checkout myproject
git rebase linux-3.14.y --onto v3.15.3

关于linux - 什么 git 操作将我的更改从内核 3.14.y 移植到 3.15.y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24602081/

相关文章:

c - 自定义排序函数的奇怪结果

php - 即使我关闭 Putty 连接,我也想连续运行我的 sh 文件

c++ - localtime() 比 gmtime() 多花费 24 倍 linux 上的性能问题

linux - Python3 root sudo venv

Git - 我在哪里可以找到实现 .gitignore 的源代码

R:基于 NA 位置合并来自同一 data.frame 的列

git - 如何将值传递到Gitlab CI作业

ruby-on-rails - Rails : . gitignore 仍在跟踪我的 database.yml 文件

mysql - R连接2个数据框

svn - 乌龟SVN : Show all changesets in branch that haven't been merged to trunk?