Qual è la differenza tra Shelve di IntelliJ e Git stash?


Risposte:


66

Dalla documentazione di IntelliJ :

Nell'integrazione Git, oltre a shelving e unshelving, sono supportati rispettivamente "stashing" e "unstashing". Queste caratteristiche hanno molto in comune, l'unica differenza sta nel modo in cui le patch vengono generate e applicate.

  • Le patch con modifiche nascoste vengono generate da Git stesso. Per applicarli in un secondo momento, non è necessario IntelliJ IDEA.
  • Le patch con modifiche accantonate vengono generate da IntelliJ IDEA. Normalmente, vengono applicati anche tramite l'IDE. L'applicazione di modifiche accantonate al di fuori di IntelliJ IDEA è possibile ma richiede passaggi aggiuntivi.

21
Bene, allora quali sono i vantaggi dello scaffale dal momento che è semplicemente "meno compatibile" con il semplice git?
MaxiWheat

17
Sembra che la scaffalatura sarebbe utile se si usasse un VCS che non aveva una funzionalità di stile di scorta nativa. Se usi git, non vedo alcun reale vantaggio.
Daniel Compton

4
I "vantaggi reali" sono elencati nella risposta di id.bobr. La cosa principale per me è essere in grado di scegliere quali file / blocchi conservare, proprio come quando effettuo il commit.
Martin Melka

A partire da Git 2.13, è possibile archiviare singoli file con git stash push.
Deric Lima

45

Sono abbastanza simili tranne:

  • Non puoi usare shelve al di fuori di IDE, perché è una caratteristica di Intellij.
  • Git stash funziona solo con l'intera directory di lavoro e index. Lo scaffale di IntelliJ può funzionare con singoli file ed elenchi di modifiche (un'altra funzionalità di IntelliJ). Come puoi vedere, ad esempio, qui , a volte è necessario.
  • Idea ha un supporto integrato migliore per scaffalature. Lavorare con git stash è più semplice. In particolare, puoi accantonare / annullare la memorizzazione delle modifiche o rivedere i file archiviati dalla finestra dello strumento di controllo della versione.

Inoltre, IMHO, shelve funziona leggermente più velocemente, specialmente in un grande progetto, quando sono stati modificati molti file.

Consulta la documentazione per maggiori informazioni.


Trovo che fare clic con il pulsante destro del mouse su un immutabile per accantonarlo rapidamente sia molto utile. Come alludi, lo trovo leggermente più veloce.
vikingsteve

3
"Git stash funziona solo con l'intera directory di lavoro e indice" - questo è sbagliato. Git stash può memorizzare anche singoli file e cartelle, ad esempio:git stash -- foo/bar.txt
Chaoz

20

Un netto vantaggio che Intellij's Shelve ha rispetto alla semplice scorta di Git è che usando Shelve, puoi salvare le modifiche appartenenti a più repository in un elenco di modifiche. Usando lo stash, avresti bisogno di stash / unstash in ogni repo individualmente. Ciò è molto utile in un progetto di grandi dimensioni con più moduli (ciascuno con il proprio repository) in cui il lavoro di una particolare funzionalità può interessare più moduli (e quindi più repository)


0

Ecco cosa dice la documentazione

Le modifiche all'archiviazione sono molto simili agli scaffali. L'unica differenza è nel modo in cui le patch vengono generate e applicate. Gli archivi sono generati da Git e possono essere applicati dall'interno di IntelliJ IDEA o dall'esterno. Le patch con modifiche accantonate vengono generate da IntelliJ IDEA e vengono applicate anche tramite IDE. Inoltre, lo stashing coinvolge tutte le modifiche non salvate, mentre quando si inseriscono le modifiche su uno scaffale, è possibile selezionare alcune delle modifiche locali invece di archiviarle tutte.

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.