4

我有一个带有 Android 内核 v3.0.36 的 git 存储库。但是现在,Linux 3.0.38 出来了。Android 和主线 Linux 不兼容,所以我只想从 3.0.37 和 3.0.38 中提取更改(只是更改的一小部分)。而且我不想进行其他更改。

我正在使用 Github。我看到很多人的日志是这样的:

net: wireless:bcm4329: Fix Unknown escape '%' 90fcf01d79 Browse code Choi, Jong-Hwan 作者 8 个月前 xxx 承诺 3 个月前

他们怎么能做到?我该怎么做?

4

2 回答 2

3

您可以获取存储库中的另一个分支并挑选您需要的提交。查看git cherry-pick, 或者git show --pretty=email <commit-id> |git am -3, 甚至git format-patch -o /tmp v3.0.37..v3.0.38, 后面跟着git am -3 /tmp/<file>有趣的并且可能编辑过的补丁

于 2012-07-23T15:10:40.460 回答
1

如“在两个标签之间创建单个补丁并在它们之间进行多次提交”,您可以在 v3.0.36 之间创建单个路径。和 3.0.38,在一个 repo 中指定您感兴趣的子目录。

git diff tag1 tag2 -- /path/to/subdir > the-patch.diff

这个想法是,您可以将差异应用于另一个存储库。

关于 GitHub,同样的机制也适用于拉取请求:一旦你在本地打了补丁,你就可以推送到我们的 GitHub 仓库,它应该是一个分叉,然后发出拉取请求。


作为fork0评论,git diff会丢失与提交相关的评论。
git format-patch是一个更好的解决方案(我赞成 fork 的答案)。只有当您意识到它的局限性
时, 我才会考虑。cherry-pick


这样的提交是 gregkh 完成的拉取请求的结果,并被 edoko 接受。

于 2012-07-23T11:52:52.423 回答