Lavorare con l'unione e l'eliminazione dei rami
Creiamo prima un ramo master, inseriamo alcuni commit, creiamo un nuovo ramo chiamato features, aggiungiamo alcuni commit, quindi torniamo al master e commettiamo di nuovo. Ecco i comandi:
$ mkdir miogioco$ cd miogioco
$ git init
$ echo "Decisione di progettazione 1: Brainstarm" >> design.TXT
$ git add -A
$ git commit -m "C0: Progetto avviato"
$ echo "Decisione progettuale 2: scrivere codice" >> design.TXT
$ git add -A
$ git commit -m "C1: codice inviato"
$ caratteristiche del ramo git
$ git funzionalità di checkout
$ echo "Aggiungi funzione 1" >> funzione.TXT
$ git add -A
$ git commit -m "C2: Caratteristica 1"
$ echo "Aggiungi funzione 2" >> funzione.TXT
$ git add -A
$ git commit -m "C3: Caratteristica 2"
$ git checkout master
$ echo "Modifica di nuovo il master" >> design.TXT
$ git add -A
$ git commit -m "C4: Master modificato"
I comandi precedenti hanno creato la seguente situazione:
Puoi controllare la cronologia dei due rami per vedere quali commit hanno:
$ git statoSul maestro di filiale
niente da eseguire, pulizia della directory di lavoro
$ git log --oneline
2031b83 C4: Master modificato
1c0b64c C1: codice inviato
$ git funzionalità di checkout
Passato alle "caratteristiche" del ramo
$ git log --oneline
93d220b C3: Caratteristica 2
ad6ddb9 C2: Caratteristica 1
1c0b64c C1: codice inviato
ec0fb48 C0: Progetto avviato
Supponiamo ora di voler portare tutte le modifiche dal ramo delle funzionalità al nostro ramo principale. Dovrai avviare il processo dalla destinazione della fusione. Poiché vogliamo fonderci nel ramo principale, è necessario avviare il processo da lì. Quindi diamo un'occhiata al ramo principale:
$ git checkout masterPassato al ramo 'master'
$ git stato
Sul maestro di filiale
niente da eseguire, pulizia della directory di lavoro
Ora creiamo l'unione:
$ funzioni di unione di gitSe non ci sono conflitti nell'unione, si aprirà un editor di testo con i commenti:
Unisci "caratteristiche" del ramo# Per favore inserisci un messaggio di commit per spiegare perché questa unione è necessaria,
# soprattutto se unisce un upstream aggiornato in un ramo di argomento.
#
# Le righe che iniziano con '#' verranno ignorate e un messaggio vuoto verrà interrotto
# il commit.
Puoi modificare i commenti o accettare quelli predefiniti. L'output di unione dovrebbe mostrare risultati come questo:
Fusione realizzata dalla strategia 'ricorsiva'.caratteristica.txt | 2 ++
1 file modificato, 2 inserimenti(+)
crea modalità 100644 funzione.TXT
Dopo l'unione, hai la seguente condizione:
Se controlli i log, troverai:
$ git statoSul maestro di filiale
niente da eseguire, pulizia della directory di lavoro
$ git log --oneline
46539a3 C5: Unisci "caratteristiche" del ramo
2031b83 C4: Master modificato
93d220b C3: Caratteristica 2
ad6ddb9 C2: Caratteristica 1
1c0b64c C1: codice inviato
ec0fb48 C0: Progetto avviato
Hai unito con successo le modifiche. Tuttavia, il ramo delle funzionalità è ancora presente.
$ git ramo -aCaratteristiche
* maestro
Puoi eliminarlo con il seguente comando:
$ git branch -d caratteristicheSe controlli ora, dovresti vedere solo il ramo principale:
$ git ramo -a* maestro
Conclusione
Assicurati di controllare regolarmente i rami inutilizzati ed eliminarli. Vuoi mantenere pulito il tuo repository per facilitarne la navigazione e la comprensione.
Ulteriori letture:
- https://git-scm.com/book/it/v2/Git-Branching-Basic-Branching-and-Merging