Tutorial Git - Rami

  1. Perché è necessario il ramo?
  2. Creare un nuovo ramo in Git
  3. Cancellare un ramo in Git
  4. Creare e controllare un nuovo ramo contemporaneamente in Git

In questo tutorial, impareremo una delle caratteristiche più importanti del sistema di controllo della versione di git: il ramo.

Perché è necessario il ramo?

Fino ad ora, abbiamo lavorato solo su un ramo - il ramo master. È il ramo predefinito quando creiamo un nuovo repository.

In generale, il ramo master rappresenta la versione stabile dei vostri codici ed è destinato ad essere rilasciato o pubblicato. Per questo motivo, non vogliamo provare nuove funzionalità sul nuovo codice del ramo master per evitare che questo incasini il codice.

Quello di cui abbiamo bisogno quando vogliamo aggiungere una nuova funzionalità alla nostra applicazione, è di creare un ambiente isolato per provare questa nuova funzionalità, e se la finiamo e la proviamo, possiamo fondere questa nuova funzionalità nel ramo master. Invece di aggiungere altri commit al ramo master, creiamo un nuovo ramo per lavorare come ambiente isolato e per testare la nuova funzionalità.

Creare un nuovo ramo in Git

$ git branch test_branch

Quello che stiamo facendo qui quando facciamo questo ramo test_branch è che stiamo copiando lo stato del codice del ramo master su questo ramo, e poi possiamo lavorare in questo ramo test_branch.

Si possono elencare i rami disponibili sul PC digitando,

$ git branch
* master
  test_branch

Qui sono elencati il nuovo test_branch e il master.

Ora siete ancora sul ramo master anche se avete appena creato il nuovo ramo. È necessario controllare il nuovo ramo per lavorarci.

$ git checkout test_branch
Switched to branch 'test_branch'
D       test1_rename.txt

Dice che ora è passato al ramo test_branch, e se si fa git branch di nuovo,

$ git branch
  master
* test_branch

Poi vedremo che ora siamo sul ramo test_branch perché l’asterisco * è prima di test_branch ma non più master.

Aggiungiamo un po’ di testo al file test3.txt, come Questa è la riga aggiunta nel ramo test_branch. Ora, se fate git status, vedrete che avete cambiato questo file.

$ git status
On branch test_branch
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   test3.txt

no changes added to commit (use "git add" and/or "git commit -a")

Potremmo impegnare le modifiche a questo ramo come abbiamo imparato negli ultimi capitoli.

Quello che abbiamo fatto è che abbiamo creato questo nuovo ramo e fatto alcune modifiche che sono isolate dal ramo master. I codici nel ramo master rimangono invariati e stabili.

Cancellare un ramo in Git

Dopo che siamo soddisfatti della nuova funzionalità aggiunta alla filiale, potremmo cancellarla.

$ git checkout master
$ git branch -d test_branch
error: The branch 'test_branch' is not fully merged.
If you are sure you want to delete it, run 'git branch -D test_branch'.

Il parametro -d dopo branch significa che cancellerà il ramo specificato.

Abbiamo un errore che dice The branch 'test_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D test_branch'.. La d minuscola funziona solo una volta che abbiamo unito il ramo, ma la D maiuscola potrebbe cancellare il ramo con la forza. Introdurremo come fondere il ramo nei prossimi capitoli, ma per ora, usiamo solo le maiuscole D per cancellare questo ramo.

$ git branch -D test_branch
Deleted branch test_branch (was 7d6bca6).

Se si controlla il ramo ora, mostra solo il ramo master ora.

$ git branch
* master

Creare e controllare un nuovo ramo contemporaneamente in Git

Il flusso di lavoro mostrato sopra crea prima un ramo usando git branch e poi controlla questo ramo usando git checkout.

Ha un modo più veloce per combinare questi due passaggi in uno solo.

$ git checkout -b new_test_branch
Switched to a new branch 'new_test_branch'
M       test3.txt

Quello che fa è che crea un ramo e lo controlla anche. Così non dobbiamo eseguire questi due passi separatamente.