repositorio - git remote origin
¿Puedo obtener un alijo de un repositorio remoto en una sucursal local? (3)
No puedes, pero esto te proporciona un camino alternativo. is-it-possible-to-push-a-git-stash-to-a-remote-repository
Un colega tiene un alijo en su repositorio al que puedo acceder (a través del sistema de archivos), y me gustaría colocar ese alijo en una rama de mi repositorio.
% git ls-remote ~alice/work/repo/ stash 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 refs/stash
Pero cuando trato de buscar eso, git me dice "no puedo 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 recuperar el escondite remoto?
Sí, puedes, parcialmente. El stash es solo otro ref . Puede obtener refs que no son jefes (ramas) especificando un refspec con la ruta de referencia completa.
git fetch some-remote +refs/stash:refs/remotes/some-remote/stash
git stash apply some-remote/stash
También puede configurar esto para obtener el alijo cuando ejecuta un alcance ordinario:
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 fallará si no hay un alijo con un "Refspec no válido", ya que el ref. No existe, por lo que probablemente sea mejor hacerlo a pedido. Podrías 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 varios escondites. Estos se almacenan como entradas en el reflog , y no puede obtener un reflog de un control remoto.
Actualización : Una respuesta directa a la pregunta del cartel original es:
git send-pack ./ 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0:refs/heads/tempbranch
''tempbranch'' estará en el último alijo (stash @ {0}) desde el control remoto. Desafortunadamente, no creo que el reflog se obtenga de las sucursales remotas, por lo que no hay manera de obtener otros escondites, a menos que tenga acceso al repositorio de origen.
Secuencias de comandos : publiqué una solución más completa de "secuencias de comandos" en la pregunta mencionada
¿Es posible empujar un alijo git a un repositorio remoto?
Además, como descubrí mientras tanto, git-send-pack puede ser instrumental si tienes acceso al repositorio de origen:
git send-pack ../myworkingfolder/ stash@{0}:refs/heads/collegue_stash