你如何用`--no-verify``git cherry-pick --continue`?

Arc*_*ano 8 git

你怎么git cherry-pick --continue处理--no-verify因为--no-verify不是一个有效的选择。 git cherry-pick --no-commit --continue不起作用,因为这两个参数是互斥的。

mic*_*ers 40

如果你的cherry-pick(没有--no-commit)有合并冲突并且你想在--continue解决它们之后,你可以暂时禁用当前存储库的 git hooks:

$ git config core.hooksPath # Print current setting
$ git config core.hooksPath '/dev/null/'
Run Code Online (Sandbox Code Playgroud)

完成后,根据core.hooksPath之前是否设置,您可以恢复之前的设置:

$ git config core.hooksPath '/some/previous/path'
Run Code Online (Sandbox Code Playgroud)

或再次取消设置:

$ git config --unset core.hooksPath
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这是唯一的解决方案 (19认同)
  • 由于某种原因,上述方法对我不起作用(通过“git config”修改 hooksPath)。这是解决方法的解决方法:手动进入“.git/hooks/”目录,重命名有问题的钩子,返回并完成“cherry-pick --continue”,然后将有问题的钩子重命名回他们原来的名字。 (5认同)
  • 这应该是公认的答案! (4认同)

Rom*_*eri 26

--no-verify是命令的选项commit,而不是cherry-pick.

但是,您可以做的是使用您的--no-commit 标志cherry-pick,然后git commit --no-verify就可以结束樱桃选择了。

  • 不幸的是,如果“gitcherry-pick”引发了必须解决的冲突,那么这种方法将不起作用。在这种情况下,解决冲突后,只能使用 gitcherry-pick --continue 来解决cherry-pick,但是,如果预提交挂钩失败,就会被卡住。唯一的选择是中止挑选并从头开始,包括解决合并冲突。似乎这并不是真正应该发生的事情,应该有一种方法可以在继续活动的樱桃选择时暂时禁用挂钩。 (21认同)
  • @Pankrates 我在这个确切的场景中使用了这个方法。我精心挑选了一系列提交,其中一些中间的提交存在冲突(并且触发了我的预提交钩子)。我刚刚修复了冲突并执行了“git add”;`git commit` 然后 `gitcherry-pick --continue` (3认同)
  • --no-commit 不能与 --continue 一起使用。我会将其添加到 OP 中以使其更加清晰 (2认同)

hec*_*nto 8

进一步扩展@teejay-bruno 方法,我所做的是:

pre-commit run
git -c core.hooksPath=/dev/null  cherry-pick --continue
Run Code Online (Sandbox Code Playgroud)

这样,即使某些项目失败,我仍然运行验证,并且在不改变全局配置的情况下进行挑选


小智 7

如果所有冲突都解决了,那么就不需要了git cherry-pick --continue
只是git commit --no-verify。然后该过程将完成。