Mantenere una serie di revisioni "sicure" di un progetto è la funzione principale di qualsiasi sistema di controllo della versione. Git realizza questo registrando istantanee di un progetto. Dopo aver registrato un'istantanea, puoi tornare indietro e visualizzare le vecchie versioni, ripristinarle e sperimentare senza il timore di distruggere le funzionalità esistenti.
Gli utenti SVN e CVS dovrebbero notare che questo è fondamentalmente diverso dall'implementazione del proprio sistema. Entrambi questi programmi registrano diff per ogni file, una registrazione incrementale delle modifiche in un progetto. Al contrario, le istantanee di Git sono proprio questo-istantanee. Ogni commit contiene la versione completa di ogni file che contiene. Ciò rende Git incredibilmente veloce poiché non è necessario generare lo stato di un file ogni volta che viene richiesto:
Questo capitolo introduce il flusso di lavoro di base per la creazione di istantanee utilizzando la directory di lavoro, l'area di gestione temporanea e la cronologia dei commit. Questi sono i componenti principali del controllo di revisione basato su Git.
L'area di gestione temporanea di Git ti offre la possibilità di organizzare un commit prima di aggiungerlo alla cronologia del progetto. messa in scena è il processo di spostamento delle modifiche dalla directory di lavoro all'istantanea gestita.
Ti dà l'opportunità di scegliere e scegliere relazionato cambia dalla directory di lavoro, invece di commettere tutto in una volta. Questo significa che puoi creare logico istantanee finite cronologico quelli. Questo è un vantaggio per gli sviluppatori perché consente loro di separare le attività di codifica dalle attività di controllo della versione. Quando si scrivono le funzionalità, è possibile dimenticare di fermarsi per eseguirne il commit in blocchi isolati. Quindi, una volta terminata la sessione di codifica, è possibile separare le modifiche in tutti i commit desiderati attraverso il palco.
Per aggiungere file nuovi o modificati dalla directory di lavoro all'area di gestione temporanea, utilizzare il seguente comando:
aggiungi git
Per eliminare un file da un progetto, devi aggiungerlo all'area di staging come un file nuovo o modificato. Il comando successivo metterà in scena la cancellazione e smetterà di tracciare il file, ma non cancellerà il file dalla directory di lavoro:
git rm --cached
La visualizzazione dello stato del tuo repository è una delle azioni più comuni in Git. Il seguente comando restituisce lo stato della directory di lavoro e dell'area di gestione temporanea:
stato git
Ciò comporterà un messaggio simile al seguente (alcune sezioni potrebbero essere omesse a seconda dello stato del repository):
# On branch master # Modifiche da eseguire: # # nuovo file: foobar.txt # # Modifiche non organizzate per il commit: # # modificato: foo.txt # # File non tracciati: # # bar.txt
La prima sezione, "Modifiche da eseguire" è la tua istantanea graduale. Se dovessi correre Git commit
al momento, solo questi file verrebbero aggiunti alla cronologia del progetto. La prossima sezione elenca cingolato file che non saranno inclusi nel prossimo commit. Infine, "File non tracciati" contiene file nella directory di lavoro che non sono stati aggiunti al repository.
Se sono necessarie informazioni più dettagliate sulle modifiche nella directory di lavoro o nell'area di gestione temporanea, è possibile generare una diff con il seguente comando:
git diff
Questo emette un diff di ogni non è stato classificato cambia nella tua directory di lavoro. Puoi anche generare un diff di tutti messo in scena cambia con --cache
bandiera:
git diff --cached
Si noti che la cronologia del progetto non rientra nell'ambito di stato git
. Per visualizzare istantanee impegnate, è necessario log git
.
stato git
I commit rappresentano ogni versione salvata di un progetto, che li rende l'unità atomica del controllo di versione basato su Git. Ogni commit contiene un'istantanea del progetto, le informazioni dell'utente, la data, un messaggio di commit e un Checksum SHA-1 del suo intero contenuto:
commettere b650e3bd831aba05fa62d6f6d064e7ca02b5ee1b Autore: johnData: Mer Jan 11 00:45:10 2012 -0600 Alcuni messaggi di commit
Questo checksum funge da ID univoco del commit e significa anche che verrà eseguito un commit mai essere corrotto o alterato involontariamente senza che Git se ne accorga.
Poiché l'area di staging contiene già il changeset desiderato, il commit non richiede alcun coinvolgimento dalla directory di lavoro.
Per eseguire il commit dell'istantanea gestita e aggiungerla alla cronologia del ramo corrente, eseguire quanto segue:
Git commit
Ti verrà presentato un editor di testo e verrà richiesto un "messaggio di commit". I messaggi di commit dovrebbero avere il seguente formato:
Git utilizza la prima riga per la formattazione dell'output del registro, delle patch per l'invio di e-mail, ecc., Quindi dovrebbe essere breve, mentre continua a descrivere l'intero changeset. Se non riesci a trovare la riga di riepilogo, probabilmente significa che il tuo commit contiene troppe modifiche non correlate. Dovresti tornare indietro e dividerli in commit distinti. Il riepilogo dovrebbe essere seguito da una riga vuota e una descrizione dettagliata delle modifiche (ad es., Perché hai apportato le modifiche, a quale numero di ticket corrisponde).
Come lo stato di un repository, la sua cronologia è una delle attività più comuni nel controllo di versione Git. È possibile visualizzare il commit corrente del ramo con:
log git
Ora abbiamo gli unici due strumenti di cui abbiamo bisogno per ispezionare ogni componente di un repository Git.
stato git
vs. log git
Questo ci dà anche un raggruppamento naturale di comandi:
aggiungi git
, git rm
, stato git
Git commit
, log git
Git fornisce una pletora di opzioni di formattazione per log git
, alcuni dei quali sono inclusi qui. Per visualizzare ogni commit su una singola riga, usa:
git log --oneline
Oppure, per indirizzare la cronologia di un singolo file anziché dell'intero repository, utilizzare:
git log --oneline
Il filtraggio dell'output del registro è anche molto utile quando la cronologia cresce oltre una schermata di commit. È possibile utilizzare quanto segue per visualizzare i commit contenuti in
ma non in
Entrambi gli argomenti possono essere un ID commit, un nome di ramo o un tag:
log git...
Infine, puoi visualizzare un diffstat delle modifiche in ogni commit. Questo è utile per vedere quali file sono stati interessati da un particolare commit.
git log --stat
Per visualizzare la cronologia, potresti anche voler guardare il gitk
comando, che in realtà è un programma separato dedicato ai rami grafici. Correre git help gitk
per dettagli.
I tag sono semplici puntatori ai commit e sono incredibilmente utili per il bookmarking di revisioni importanti come quelle pubbliche. Il tag git
comando può essere usato per creare un nuovo tag:
git tag -a v1.0 -m "Rilascio stabile"
Il -un
l'opzione dice a Git di creare un annotato tag, che consente di registrare un messaggio insieme a esso (specificato con -m
).
L'esecuzione dello stesso comando senza argomenti elencherà i tag esistenti:
tag git
Questa lezione rappresenta un capitolo da Git in modo succinto, un eBook gratuito dal team di Syncfusion.