我正在为一个我认为很简单的问题寻求建议,并且通过创建一个小脚本确实可能很简单,但我认为应该已经有一种方法可以使用 git/quilt/stgit 来做到这一点。
我不太擅长 git,这给我带来了一些问题。
我的问题:
我有一个 git 树(linux 内核)和一些补丁。发生了什么,这些补丁是针对旧版本的内核的,其中许多已经应用到我的树上。补丁以标题行开头,例如
From b1af4315d823a2b6659c5b14bc17f7bc61878ef4 (timestamp)
并通过做类似的事情
git show b1af4315d823a2b6659c5b14bc17f7bc61878ef4
在我的内核树中,我可以看到它们已经在我当前的树中可用,并且我不想尝试应用它们。
我尝试使用类似的东西git 应用 or git am,但他们似乎尝试应用补丁:
alan@ubuntu:~/Desktop/openwrt/linux-git/linux-2.6.33.y$ git apply -p1 --check --index /home/alan/Desktop/openwrt/svn/backfire-branch/build_dir/linux-kirkwood/linux- 2.6.30.10/patches/generic/000-bzip_lzma_remove_nasty_hack.patch
error: patch failed: lib/decompress_bunzip2.c:45
error: lib/decompress_bunzip2.c: patch does not apply
error: patch failed: lib/decompress_unlzma.c:29
error: lib/decompress_unlzma.c: patch does not apply
那么:是否有任何命令/util 执行检查补丁是否已应用到当前树上,如果没有,则执行“git apply”,如果有,则跳过补丁?
Thanks.
您可以创建一个版本的新分支(为其制作补丁),然后应用它们并将临时分支合并到主分支中:
git checkout -b temp-branch v2.6.30
git apply/am ...patches...
git checkout master
git merge temp-branch
这应该可以解决大多数重复的补丁(尽管它不会使用提交 ID,而是使用补丁内容)。另外,你可以尝试git rebase
在最后一步。
这不是最优雅的方式,但应该可以解决问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)