从远程git repo获取特定提交

时间:2014-11-13 09:32:11

标签: git git-fetch

因此,我基本上要做的是从一个远程仓库下拉一个给定的提交(由其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)。

我的意思是,我想我可以想出一个任意的本地分支名称,以便始终将提交下拉,然后在每次推送后删除该分支,但这似乎是不优雅的......

2 个答案:

答案 0 :(得分:5)

Git不允许您按设计获取SHA。根据开发人员mailing list

之前的对话,似乎没有任何计划启用此功能

您必须在遥控器上有一个参考才能获取。您应该能够自动生成我想象的这个部分,因为您必须有一个机制来传递远程和Sha来回。

答案 1 :(得分:1)

使用git fetchorigin存储库获取所有提交。然后,在所需的提交

上创建一个分支
git branch theBranch 7d0969dab

现在,您可以将此分支推送到第二个仓库

git push https://github.com/secondRepo/bar.git theBranch:theRemoteBranchNameYouWant