因此,我基本上要做的是从一个远程仓库下拉一个给定的提交(由其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)。
我的意思是,我想我可以想出一个任意的本地分支名称,以便始终将提交下拉,然后在每次推送后删除该分支,但这似乎是不优雅的......
答案 0 :(得分:5)
Git不允许您按设计获取SHA。根据开发人员mailing list
之前的对话,似乎没有任何计划启用此功能您必须在遥控器上有一个参考才能获取。您应该能够自动生成我想象的这个部分,因为您必须有一个机制来传递远程和Sha来回。
答案 1 :(得分:1)
使用git fetch
从origin
存储库获取所有提交。然后,在所需的提交
git branch theBranch 7d0969dab
现在,您可以将此分支推送到第二个仓库
git push https://github.com/secondRepo/bar.git theBranch:theRemoteBranchNameYouWant