我正试图运行git平分来找到一个中断的提交,但我遇到的问题是,如果没有在顶部应用一系列额外的补丁,中断就不会明显。我只是从另一个分支中挑选这些,但我遇到的问题是,在平分线的某些步骤中,它们应用不干净,需要进行一些修复。这应该不是问题,但我在修复后似乎无法继续前进。
例如。。。
$ git bisect start
djrscally@valhalla:$ git bisect bad
djrscally@valhalla:$ git bisect good tags/v5.14-rc7
Bisecting: 13382 revisions left to test after this (roughly 14 steps)
[1ea3615b6168eaaf07445c8d32a4c6bc965d9579] iio: accel: sca3000: Use sign_extend32() instead of opencoding sign extension.
djrscally@valhalla:$ git cherry-pick --no-commit 820aca592e0c^..58915847b332
Auto-merging include/acpi/acpi_bus.h
Auto-merging drivers/acpi/scan.c
Auto-merging drivers/i2c/i2c-core-acpi.c
Auto-merging drivers/regulator/Makefile
CONFLICT (content): Merge conflict in drivers/regulator/Makefile
Auto-merging drivers/regulator/Kconfig
CONFLICT (content): Merge conflict in drivers/regulator/Kconfig
error: could not apply 6a7e459bf029... regulator: Introduce tps68470-regulator driver
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
在这一点上,我需要修复驱动程序/调节器/Makefile和Kconfig;在这一点上,我希望能够继续,但我做不到:
djrscally@valhalla:$ git add .
djrscally@valhalla:$ git cherry-pick --continue
error: your local changes would be overwritten by cherry-pick.
hint: commit your changes or stash them to proceed.
fatal: cherry-pick failed
啊啊啊,我真的不知道在这一点上该怎么办。git cherry-pick --skip
似乎重置了之前精心挑选的提交中的所有更改。我可以丢弃--no-commit
,但我真的不确定平分将如何处理我突然在它决定平分的点上丢弃了大量提交的事实。
我该如何处理?
我的第一次尝试是,而不是反复挑选,只需一次完成整个批次:
git diff 820aca592e0c^..58915847b332 | git apply -3
然后解决冲突,这是最后一步,添加解决方案,就可以进行测试了。
这可能是一些手动重新读取的好地方,您可以通过mkdir -p `git rev-parse --git-common-dir`/rr-cache
一次来告诉git您正在使用没有自动化辅助的重新读取,然后在收到冲突通知时使用git rerere
,然后修复任何尚未修复的内容,并在添加解决方案后再次使用git rerere
。