比方说,有一些具有依赖关系的Gerrit:
A <- B <- C
((C取决于B,B取决于A)
如果我只是简单地选择C,它将无法工作,因为将不会挑选依赖项(A和B)。
我如何轻松地 cherry-pick C,以便在我的本地树中,其所有依赖项都将自动在一个命令中应用?
如果已提交所有A,B和C,则可以考虑git merge
:
git merge C --no-ff
# merge commit does not invoke the hook commit-msg, so
# if your Gerrit requires Change-Id and you want to push
# the merged commits for review, use amend-commit to generate it
git commit --amend
如果其中至少一项尚未提交,请改用git cherry-pick
:
git cherry-pick HEAD..C --no-merges
HEAD..C
等效于C和new到当前分支可到达的所有提交。 --no-merges
排除其中的合并提交。在理想情况下,合并提交不涉及冲突,您也不必选择冲突。如果您确实想挑选一个合并提交,那么有点烦人,因为您必须指定哪个父级作为主线。
如果C及其祖先在本地尚不可用,则需要先获取它们:
git fetch origin <refspec_of_C>
您可以在C的页面上找到C的参考规范。像refs/changes/xx/xxxxx/x
这样的裁判。如果C已提交到分支,则可以取而代之。