2011-08-19 3 views
1

J'ai deux repos git que j'ai cloné sur ma machine locale. Je tente d'appliquer un changement d'une prise en pension à l'autre:Référencement du sha1 dans un référentiel local à partir d'un autre référentiel local dans git

cd path/to/local-repo1 
git fetch path/to/local-repo2 <sha1> 
// cherry-pick from fetch head, etc. 

Je reçois:

fatal: Couldn't find remote ref <sha1> 
fatal: The remote end hung up unexpectedly 

Je trouve git: Apply changes introduced by commit in one repo to another repo, mais pourquoi est-ce que git ne reconnaît pas le SHA1 un autre dépôt local? Il s'avère que si je remplace le sha1 par le nom d'une branche, cela réussit, mais je dois le faire avec une multitude de sha1 et je ne veux pas vraiment créer une branche sur chacun d'entre eux afin de les référencer.

+2

Ceci n'est pas une réponse à votre question spécifique, mais vous n'avez pas * besoin * de créer des branches et d'aller chercher chacune d'elles. Vous pouvez simplement ajouter 'local-repo2' en tant que remote et' git fetch local-repo2', puis sélectionner les hachages. –

Répondre

1

La forme de git fetch que vous essayez d'utiliser est:

git fetch <repository> <refspec> 

Cependant, votre SHA1SUM est (probablement pas!) Un refspec valide. Une refspec définit un mappage entre refs (généralement les noms de branches) entre le référentiel source et le référentiel cible. SHA1sums (noms d'objet) sont distincts de refs, et l'erreur vous indique que lorsque vous faites git fetch path/to/local-repo2 f414f31, il étend la refspec à f414f31:f414f31 et ne parvient pas à trouver la référence f414f31 dans le référentiel distant. C'est parce que ce n'est pas un ref.

Donc, en supposant que votre livraison est sur la branche locale dans le dépôt distant, je fais ce qui suit:

git remote add other-local path/to/local-repo2 
git fetch other-local 
git cherry-pick f414f31 

La forme git fetch <remote-name> va chercher toutes les branches locales dans le référentiel à distance aux succursales de suivi à distance sous refs/remotes/<remote-name>, et s'assure que tous les objets nécessaires pour ces branches (y compris toutes les validations de l'historique) sont présents dans votre référentiel local.

Questions connexes