2015-10-07 16 views
44

IntelliJ supporta le casse git così come il proprio comando di shelve incorporato. Questi sembrano essere quasi identici nello scopo e nell'utilità. Qual'è la differenza tra loro?Qual è la differenza tra IntelliJ's Shelve e Git stash?

+4

Cosa sono i downvotes? – Thilo

+3

Questa domanda è attualmente il terzo risultato top in Google per "shelve vs stash", non credo che sia necessario votarlo per difetto – Mattisdada

risposta

33

Dal IntelliJ documentation:

Nel integrazione Git, oltre alle scaffalature e unshelving "stashing" e "unstashing" sono supportati rispettivamente. Queste caratteristiche hanno molto in comune, l'unica differenza è nel modo in cui le patch vengono generate e applicate.

  • Le patch con le modifiche nascoste sono generate da Git stesso. Per applicarli in seguito, non è necessario IntelliJ IDEA.
  • Le patch con modifiche shelving sono generate da IntelliJ IDEA. Normalmente, vengono applicati anche tramite l'IDE. Anche l'applicazione di modifiche accantonate all'esterno di IntelliJ IDEA è possibile ma richiede passaggi aggiuntivi.
+10

Bene, quindi quali sono i vantaggi degli scaffali dato che è solo "meno compatibile" con un semplice git? – MaxiWheat

+7

Sembra che la scaffalatura sia utile se si utilizza un VCS che non ha una funzione di stile di memorizzazione nativa. Se usi git, non vedo alcun beneficio reale. –

14

sono abbastanza simili tranne:

  • Non è possibile utilizzare accantonare IDE di fuori, perché è caratteristica di IntelliJ.
  • Stash Git funziona solo con l'intera directory di lavoro e indice. Gli shelving di IntelliJ possono funzionare con singoli file e changelists (un'altra funzionalità di IntelliJ). Come puoi vedere, ad esempio, here, a volte è necessario.
  • L'idea ha un supporto integrato migliore per gli scaffali. Lavorare con git stash è più semplice. In particolare, è possibile accantonare/annullare le modifiche o rivedere i file accantonati dalla finestra degli strumenti di controllo della versione.

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

Vedere documentation per ulteriori informazioni.

+0

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

2

Un vantaggio distinto che lo Shelve di Intellij ha rispetto a quello di Git è che utilizzando Shelve, è possibile salvare le modifiche che appartengono a più repository in un elenco di modifiche. Usando lo stash, è necessario mettere da parte/scomporre in ciascun repository individualmente. Questo è molto utile in un progetto di grandi dimensioni con più moduli (ciascuno con un proprio repository) in cui una particolare funzionalità può essere suddivisa su più moduli (e quindi più repository)