如何获取对 git 中的提交的引用

How to get reference to commits in git

让我们有一个 git master 分支,并在某个时刻让 fork 分支用于发布(发布分支将称为 R1)。有时我需要将提交提交给他们两个(master 和 R1)。通常我在 master 分支上工作,当我完成后我测试它,cherry-pick 到 R1,在那里测试它并推送到它们。

我想在 R1 中提交对 master 分支的引用。这是通过 cherry-pick -x 完成的。但是,这种方法仅在我推送到 master 分支然后从 master 分支到 R1 时有效。假设测试花费太多时间,我希望尽可能多地让 master 和 R1 同步(我想尽量减少推送之间的时间间隔),所以我想同时推送。这样我就无法获得参考(-x in cherry-pick),因为在 R1 中进行变基时哈希会发生变化(不能使用合并)。 有什么方法可以使它自动化,这样我就可以在 R1 描述中得到正确的散列值了吗?像哈希预测之类的东西?

Is there any way how to automatize this, so I will have correct hash in R1 description? Something like hash predicting?

简短的回答是否定的。

较长的答案仍然是否定的,但您可能不需要预测 哈希。这里的问题是您正在将一些修复提交(我们称之为 F)从 master 复制到另一个分支。我们称此为 -x 精心挑选的副本提交 Fx。你也可能最终将修复提交复制到一个新的修复提交,因为你避免在这个工作流程中使用 git merge,所以如果 master 已经获得新的提交,你使用 rebase 来 cherry-pick F 到你将添加到 master 的新提交 F' 中,现在你想用F'.

的精选副本

所以,你可以这样做。如果你 rebase 提交 F 使 F',从另一个分支剥离 Fx 并重新 运行 git cherry-pick -xF' 复制到 Fx'。您已经知道这些是哪些提交,因为您拥有 F 的原始哈希 ID 并挑选它(通过 rebase)生成 F';并且您在 Fx 中有 F 的哈希 ID。缺点是这会在另一个分支上重新复制 Fx 之后的任何提交,因为 "strip Fx from the other branch" 可能很重要。

(另一种避免所有这些麻烦的方法是 合并 修复到两个分支中。请参阅 和链接的博客文章。 )