【问题标题】:How to cherry-pick a gerrit with all dependencies?如何挑选具有所有依赖项的gerrit?
【发布时间】:2020-01-20 19:48:08
【问题描述】:

假设有一些 gerrits 具有依赖关系:

A <- B <- C

(C依赖B,B依赖A)

如果我只是简单地挑选 C,它将不起作用,因为依赖项(A 和 B)不会被挑选。

我怎样才能轻松挑选C,以便在我的本地树中,它的所有依赖项都将在一个命令中自动应用?

【问题讨论】:

  • 您要查找的内容与rebase 有何不同?
  • "几个gerrits"??你不是说提交吗?

标签: git version-control cherry-pick


【解决方案1】:

如果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 已经提交到分支,则可以取而代之。

【讨论】:

  • 我知道这些方法,但我希望有一种简单的单命令方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
相关资源
最近更新 更多