在git中的另一个本地回购库中引用一个本地回购站中的sha1
问题描述:
我有两个git回购站,我在本地机器上克隆。我试图从申请一个回购到其他的变化:在git中的另一个本地回购库中引用一个本地回购站中的sha1
cd path/to/local-repo1
git fetch path/to/local-repo2 <sha1>
// cherry-pick from fetch head, etc.
我越来越:
fatal: Couldn't find remote ref <sha1>
fatal: The remote end hung up unexpectedly
我发现git: Apply changes introduced by commit in one repo to another repo,但它为什么是混帐不承认的SHA1另一个本地回购?原来,如果我用一个分支的名称替换sha1,它会成功,但我需要使用大量的sha1来做到这一点,并且不想为每个分支创建一个分支来引用它们。
答
的git fetch
,你试图使用的形式是:
git fetch <repository> <refspec>
但是,你SHA1SUM是(不可能!)一个有效的Refspec。 refspec定义源和目标存储库之间的refs(通常是分支名称)之间的映射。 SHA1sums(对象名称)与refs不同,并且错误告诉您,当您执行git fetch path/to/local-repo2 f414f31
时,它将refspec扩展为f414f31:f414f31
,然后在远程存储库中找不到参考。那是因为它不是参考。
因此,假设您的承诺是在当地的分支机构的远程仓库,我将做到以下几点:
git remote add other-local path/to/local-repo2
git fetch other-local
git cherry-pick f414f31
形式git fetch <remote-name>
取下远程储存于远程跟踪分行的所有地方分公司refs/remotes/<remote-name>
,并确保这些分支(包括历史记录中的所有提交)所需的所有对象都存在于本地存储库中。
这不是你的具体问题的答案,但你不*有*创建分支和获取每一个。你可以只添加'local-repo2'作为远程和'git fetch local-repo2',然后挑选哈希。 –