2015-01-18 32 views
112

Sono molto poco pratico con l'aspetto shelve di Git. Se stash viene utilizzato per mettere da parte il lavoro incompiuto, che cos'è shelve? Per cosa lo useresti?Git Shelve vs Stash

+5

'shelve' non è un comando git. Qual è il contesto di questa domanda, da dove provengono questi termini? 'shelve' esiste in altri strumenti ma non fa parte di git. – Jonah

+1

Git stash è simile a 'shelve' in bzr, hg, ecc. Ti riferisci ad un pacchetto di interoperabilità git? – drRobertz

risposta

89

git shelve non esiste in Git.

Solo git stash:

  • quando si desidera registrare lo stato corrente della directory di lavoro e l'indice, ma si desidera tornare a una directory di lavoro pulito.
  • che salva le modifiche locali e ripristina la directory di lavoro in modo che corrisponda al commit HEAD.

aveste un vecchio progetto git shelve per isolare le modifiche in un ramo del 2008, ma che non sarebbe molto utile al giorno d'oggi.

+33

Si scopre che ho frainteso il concetto. Ho pensato che fosse un comando Git quando in realtà è una cosa di terze parti di IntelliJ IDEA. Non sono riuscito a trovare i documenti git per questo, quindi ho pensato che mi mancasse qualcosa. https://www.jetbrains.com/idea/help/shelving-and-unshelving-changes.html –

+1

Il tuo link doc indica che "shelf" sono un insieme di modifiche (patch) gestite solo da IntelliJ IDE, "stash" unlinke che sono cose standard gestite da Git. Quindi evita gli scaffali. –

+0

@ barbara.post evitando scaffali? sei sicuro che sia la cosa giusta da fare nel caso in cui voglio nascondere solo un file modificato? –

137

Quando si utilizzano IDE JetBrains con Git, "le azioni di stashing e unstashing sono supportate oltre a shelving e unshelving.Queste funzionalità hanno molto in comune, la differenza principale è nel modo in cui le patch vengono generate e applicate. singoli file o un mucchio di file, mentre Stash può funzionare solo con un gruppo di file modificati in una volta. Ecco alcune more details sulle differenze tra di loro. "

+4

Sembra che ** shelve ** sia più flessibile di ** git stash **. –

+9

@DmitryDavydov C'è 'git stash -p' che trionfa entrambi. Sfortunatamente solo nella riga di comando. –

+1

@TheVee sì è molto simile al riparo in termini di funzionalità, grazie per informazioni. –

19

Oltre alle risposte precedenti ce n'è uno importante per me notare:

shelve è JetBrains prodotti sono caratterizzati (come WebStorm, PhpStorm, PyCharm, etc.). Mette i file accantonati nella directory .idea/shelf.

stash è una delle opzioni git. Mette i file nascosti sotto la directory .git.