假设有一些带有依赖项的gerrit:
A <- B <- C
(C 取决于 B,B 取决于 A(
如果我只是挑选 C,它将不起作用,因为依赖项(A 和 B(不会被挑选。
我如何轻松地挑选 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 访问的所有提交和当前分支的新提交。--no-merges
排除其中的合并提交。在理想情况下,合并提交不涉及冲突,您不需要挑选它们。如果您确实想挑选合并提交,这有点烦人,因为您必须指定哪个父级作为主线。
如果 C 及其祖先在本地尚不可用,则需要先获取它们:
git fetch origin <refspec_of_C>
你可以在 C 的页面上找到 C 的 refspec。这是一个像refs/changes/xx/xxxxx/x
这样的裁判.如果 C 已提交到分支,则可以改为获取分支。