如何从另一个 git 存储库中挑选提交,并保留或记录原始哈希值

How to pick commits from another git repository, and keep or record the original hashes

参考这个话题: Is it possible to cherry-pick a commit from another git repository?

.. 那里提供了这个答案(这是我需要的):

$ git --git-dir=../<some_other_repo>/.git \
 format-patch -k -1 --stdout <commit SHA> |
 \ git am -3 -k

这是否有一个可能的变体,它也可以自动记录(添加到提交消息中?)相关的 git 从我打补丁的地方到我申请的地方的散列?

手动编辑是可能的,但对于 +100 次提交来说非常乏味...

git fetch <path_to_some_other_repo> <ref_that_has_the_commit>
git cherry-pick <the_commit> -x

-x 向原始提交消息附加一行“(樱桃从提交中挑选... )”。但它不记录提交来自哪个存储库。

更新:

您要选择的提交可从一个或多个分支或标签访问。分支和标签属于 refs。在大多数情况下,除非远程存储库允许,否则您无法获取随机的单个提交。为了将提交提交到您当前的存储库中,您需要从其他存储库中获取引用。假设提交来自分支 foo,历史记录是 A-B-C-D-E-F-G 并且您想要选择 C、D 和 E。您需要 运行 git fetch origin foo 然后再进行 cherry-选择这些提交到当前分支。您可以在 git cherry-pick 中逐一指定提交,或者在 range 中逐一指定 X..Y 或者 X...Y:

git cherry-pick C D E -x
git cherry-pick B..E -x

foo的图形可能比这个简单的例子要复杂,但你总能找到合适的方法来指定它们。