Come posso condividere un git stash?


32

C'è un modo per condividere una scorta di git?

Lavoro su un numero di macchine e spesso voglio essere in grado di spostare il mio attuale stato di lavoro da uno all'altro.

Sto cercando un modo per spingere / estrarre uno stash da un clone all'altro, e farlo apparire come lo stash per l'altro clone o come apparente ramo remoto. Non mi aspetto che il primo funzionerà necessariamente se il telecomando ha già una scorta propria.

Dato che lo stash è, in effetti, già un ramo con commit (apparentemente), non sto cercando soluzioni sulla falsariga di "impegnare ogni stash su un ramo e poi condividerli" - ne ho già molti, molti rami. Sto quindi cercando refspec o simili che posso usare per controllare la spinta / trazione.

Risposte:


26

Lo stash è giusto stasho refs/stash, che puoi spingere in un ramo remoto:

git push origin stash@{2}:refs/heads/otherstash

Git rifiuterà di spingere direttamente refs/stash, tuttavia. Inoltre, non sembra esserci un modo per eseguire il push di interi reflog , in cui sono memorizzati gli stash precedenti.


6
git push origin $(for sha in $(git rev-list -g stash); do echo $sha:refs/heads/stash_$sha; done)dovrebbe fare bene per tutti gli stash; Vedi anche stackoverflow.com/a/5248758/85371
sehe

11

Non è ben integrato come un git pushma per evitare di creare rami, io uso git stash show -p > change.patch(dopo aver nascosto le modifiche) o anche git diff --cached > change.patchper creare una patch che io git apply change.patchsulla macchina successiva da cui lavoro.

Con questa soluzione almeno, se molti file vengono modificati nel tuo attuale stato di lavoro, tutto è contenuto in una singola unità dati.


Si ma come ? git stash -p mi chiede solo interattivamente su ogni pezzo - quindi sputa una linea lunga che non capisco. Dov'è quella "patch" che posso portare con me su un'altra macchina? e qual è Git diff nella cache? e come usi git apply? Puoi approfondire un po 'di più, per favore?
Motti Shneor,

Ho dettagliato e corretto la mia risposta
Neo

4

Puoi creare patch e inviarlo a qualcuno. la cosa che devono fare è applicarla.

git diff >> file.diff

3
Nota che funzionerà solo per oggetti che generano un diff; attenzione ai "file binari differiscono" nell'output.
Liam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.