2010-02-11 13 views
17

Un colega tiene un alijo en su repositorio al que puedo acceder (a través del sistema de archivos), y me gustaría incluir ese alijo en una sucursal en mi repositorio.¿Puedo buscar un escondite de un repositorio remoto en una sucursal local?

 
% git ls-remote ~alice/work/repo/ stash 
3ccc82fb1ee0e7bde1250c7926d333ce21c109c0  refs/stash 

Pero cuando trato de obtener esa, git me dice "incapaz de encontrar 3cc82 ..."

 
% git fetch ~alice/work/repo stash:new_branch 
remote: Total 0 (delta 0), reused 0 (delta 0) 
error: unable to find 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 
fatal: object 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 not found 

¿Hay alguna manera de buscar el escondite remoto?

Respuesta

8

actualización: Una respuesta directa a la pregunta del cartel original es:

git send-pack ./ 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0:refs/heads/tempbranch 

'tempbranch' estará en el última caleta (escondite @ {0}) desde el control remoto. Lamentablemente, no creo que el reflog se obtenga desde sucursales remotas, por lo que no hay forma de acceder a los otros stashes, a menos que tenga acceso al repositorio de origen.

de secuencias de comandos que: He publicado una solución más completa 'guión' sobre la cuestión mencionada

Is it possible to push a git stash to a remote repository?

También, como descubrí mientras tanto, git-enviar-pack puede ser decisivo si tiene acceso al repositorio de origen:

git send-pack ../myworkingfolder/ [email protected]{0}:refs/heads/collegue_stash 
+0

Gracias, lo vi (y lo voté arriba). Sin embargo, esta pregunta está tratando de resolver un problema diferente; Podía ver el repositorio remoto pero mi colega se había escondido en lugar de comprometerse, luego se había ido a casa y me había contado sobre el alijo, así que solo quería tomar ese alijo. Se presentan un par de soluciones sin aliento (por ejemplo, hacer un parche y aplicarlo localmente), pero estaba buscando una forma directa de buscar el alijo en mi repositorio. –

+0

Comentario editado con más información – sehe

+0

¡Oh, NIZA! ¡Gracias! –

1

No puede, pero esto le proporciona una ruta alternativa. is-it-possible-to-push-a-git-stash-to-a-remote-repository

+0

Hola naven87. Vi esa otra pregunta, pero no se ajustaba a lo que necesitaba. Gracias por su respuesta, y la aceptaré después de un tiempo si nadie más publica una solución más directa. –

+0

OK, aceptado. Gracias naven87. –

8

Sí, puede, parcialmente. El stash es solo otro ref. Puede buscar refs que no sean heads (branches) especificando un refspec con la ruta ref completa.

git fetch some-remote +refs/stash:refs/remotes/some-remote/stash 
git stash apply some-remote/stash 

Esto se puede configurar para buscar el escondite cuando se ejecuta Traiga un ordinaria, también:

git config --add remote.some-remote.fetch +refs/stash:refs/remotes/some-remote/stash 
git fetch some-remote 
git stash apply some-remote/stash 

Pero esto se producirá un error si no hay escondite con un "refspec no válido" mientras que el REF no existe, por lo que es mejor que lo hagas a pedido. Puede configurar un alias como:

cat > /usr/local/bin/git-fetch-stash 
git fetch --verbose "$1" +refs/stash:refs/remotes/"$1"/stash 
^D 
chmod +x /usr/local/bin/git-fetch-stash 

git fetch-stash some-remote 

La advertencia es que no se pueden obtener múltiples escondites. Estos se almacenan como entradas en el reflog, y no se puede obtener el reflog de un control remoto.

+2

Esta debería ser la respuesta aceptada – HerrSerker

+0

de acuerdo. El primer par de git fetch + git stash es mágico. –

Cuestiones relacionadas