trabajar repositorio remoto remote origin con agregar adicionar git git-stash

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