2012-07-28 12 views
7

Ancora un po 'di difficoltà a farmi girare la testa attorno al concetto di stadiazione come si applica a Git.Ottenere Git-concept di "stage"

È possibile eseguire analogie con SVN? Qual è lo scopo principale di avere un livello di stage in Git?

+1

Pedanticismo: non è "GIT", è "Git". Non è un acronimo/abbreviazione di nulla, Linus lo ha chiamato dopo se stesso. – millimoose

+1

ok grazie I Git it;) –

risposta

7

Somiglianze:

file che dovrebbero far parte del repository deve essere aggiunto al fine di essere monitorati. Entrambi gli strumenti utilizzano il comando add per eseguire ciò. Aggiungere file significa preparare un commit.

Differenze:

Git permette qualche ulteriore tipo di dettaglio quando si aggiungono i file. Puoi decidere di aggiungere un intero file o linee di codice distinte. Aggiunta di file all'indice o fase consente una maggiore flessibilità. SVN impegna automaticamente tutte le modifiche su un file che è già stato aggiunto al repository. Git lascia la decisione di quali modifiche associare a ciascuna operazione di commit all'utente. In altre parole: il prossimo commit in Git contiene solo quelle modifiche (righe o file) che sono state organizzate, indipendentemente dallo stato di tracciamento dei file. SVN include automaticamente tutte le modifiche sui file tracciati.

Ulteriori informazioni:

provare a leggere alcuni post che descrivono i flussi di lavoro di Git come quello da Oliver Steele. Ma sappi che c'è il non un modo per usare Git - ce ne sono molti. Se vuoi, puoi usare Git come se lavorassi con SVN.
Non aspettarti di capire la filosofia di Git in un breve periodo di tempo. Mi ci è voluto un anno per entrare e ancora imparo nuovi modi per usarlo. Penso che sia ancora più difficile se sei cresciuto con la mentalità SVN. Ci sono tonnellate di materiali là fuori: articoli, video, ... - prenditi il ​​tuo tempo e provane alcuni. Ecco una selezione dalla lista che ho raccolto.

+0

Grazie. Penso che il comando 'pull' sia molto simile al comando 'update' di SVN. No? –

+0

Sono corretto nel presupporre che non si verifichi "i conflitti" quando si utilizza Git, dal momento che è necessario eseguire un pull prima di eseguire un push, quando si collabora con un altro dev? –

+0

E che un aggiornamento è in qualche modo analogo a un tiro Git? –

6

Il vantaggio principale dell'area di gestione temporanea è che è possibile commettere facilmente solo una parte delle modifiche in un determinato file. (Ad esempio, utilizzando git add -p). Per quanto ne so, l'unico modo per eseguire un commit "parziale" in SVN è su un livello per file, o eseguendo manualmente il backup di un file e quindi ripristinando temporaneamente le modifiche che non si voglio impegnarmi.

Questo è bello se (come me) non sei uno sviluppatore altamente organizzato e vuoi essere in grado di ordinare le modifiche in commit "pulito" dopo il fatto. Ciò segue l'atteggiamento generale di Git di preferire di darvi flessibilità oltre a far rispettare la severità. Se non ne hai bisogno, puoi sempre non usarlo e usare git commit -a ....

Non ci sono analogie con SVN perché SVN non è Git e non ha un tale concetto.

4

Ecco alcuni degli scenari che mostrano l'utilità della messa in scena:

  • Lavori su un particolare pezzo e hai apportato alcune modifiche al tuo progetto. Non vuoi ancora impegnarli prima di testare la cosa completa. Ma questi cambiamenti possono spesso essere abbastanza indipendenti da rendere più commit logici di un singolo grande. Questo è quando si mettono in scena parti selettive e si fanno più commit.

  • La gestione temporanea è stata particolarmente utile durante il debug. È possibile cospargere le istruzioni del registro per tenere traccia della fonte del bug. Quindi si effettua la correzione e si esegue nuovamente il test utilizzando tali istruzioni di registro. Tuttavia, si desidera eseguire il commit della correzione prima di apportare qualsiasi modifica al codice per eliminare tali istruzioni del registro.

  • Un altro scenario in cui si è dimostrato utile è quando si è nel mezzo di fare qualcosa e si trova qualcosa di non correlato, come un errore di battitura, che si desidera correggere e rimuovere rapidamente.

ci sono molti altri tali scenari, e, probabilmente, non sarebbe in grado di lavorare con qualsiasi cosa che manca di questo concetto, una volta che si ottiene un blocco di esso :).

PS: Non ho usato SVN affatto, quindi non posso fare il confronto tra i due.

+1

Nessuno di quello che dici qui richiede un'area di sosta. Ad esempio, puoi apportare più modifiche in più commit con 'git commit '. Ovviamente questo passa attraverso l'area di staging, ma solo brevemente nel suo percorso verso il commit. – Kaz

+0

Volevo solo evidenziare il concetto di stadiazione attraverso alcuni scenari. È possibile raggiungere un unico obiettivo in molti modi. Questo non è un elenco completo di scenari in cui la stadiazione è utile, né sta mettendo in scena l'unico modo per ottenere questi risultati. Solo alcuni esempi della mia esperienza per comprendere i vantaggi della messa in scena. – Sailesh

Problemi correlati