【发布时间】:2015-01-10 09:29:42
【问题描述】:
所以,我基本上想要做的是从一个远程存储库中拉下一个给定的提交(由其 SHA 标识),然后将它作为一个新分支(我自动生成其名称)推送到另一个远程存储库。源代码库会有所不同,这些都是一次性操作,所以我不想git remote add 这些遥控器,也不想为提交创建参考/分支。而且我不想更改任何本地分支机构的 HEAD。
那么,我如何获取给定的远程提交(以及它的任何对我来说是新的父提交)并将其添加到我的本地 git 数据库中?
git pull 隐含涉及合并或变基,所以这是不可能的。
我试过git fetch https://github.com/foo/bar.git 7d0969daba1fdf9d5bb9bc9a2847fd1bc1c7e426
但这只会导致error: no such remote ref 12819ad8e10e5906df5352d7d8fec1fceb1f3afc
(是的,我验证了该远程上存在该提交 SHA;看起来 git 无论如何都不接受 SHA)。
我的意思是,我想我可以想出一个任意的本地分支名称来始终将提交拉入,然后在每次推送后删除该分支,但这似乎不优雅...
【问题讨论】:
-
Git fetch 在设计上无法通过 SHA 获取。除了创建和删除分支之外,我没有看到任何解决方案。
-
@AndrewC 如果您将其重新发布为答案,我很乐意将其标记为已接受。
-
这听起来像是重复的,但我找不到任何确切的东西,所以我会添加它
-
从 Git 2.5 开始可以获取特定的提交,请参阅 stackoverflow.com/a/30701724/537554