如何从另一个 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
的图形可能比这个简单的例子要复杂,但你总能找到合适的方法来指定它们。
参考这个话题: 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
的图形可能比这个简单的例子要复杂,但你总能找到合适的方法来指定它们。