Nozioni di base sulla ramificazione Git
La capacità di ramificare facilmente è una delle migliori caratteristiche di Git. La creazione di filiali in altri sistemi di controllo della versione può essere costosa in termini di spazio e requisiti di elaborazione. La ramificazione Git è efficiente. Quindi gli utenti sono più inclini a utilizzare le filiali in Git.
Un flusso di lavoro di ramificazione
Supponiamo che tu abbia avviato un nuovo progetto chiamato myvideogame. Ha un singolo ramo. Il nome predefinito della filiale iniziale in Git si chiama master. Viene creato automaticamente. Creiamo il repository myvideogame git.
$ mkdir myvideogame
$ cd myvideogame
$ git init
Hai creato un repository GIT vuoto. Aggiungiamo il nostro design.file txt con un po 'di testo in esso.
$ echo "Design Decision 1: Aggiungi immagini" >> Design.TXTAggiungiamo ulteriori modifiche:
$ echo "Design Decision 3: Test Game" >> Design.TXTSe controlli la storia, troverai:
$ git log --oneline
6A09BD6 C1: file di progettazione modificato
5F18d89 C0: aggiunto file di progettazione
Se controlli lo stato GIT e tutti i rami creati (usando il comando: Git Branch -A), vedi:
$ git status
Su Branch Master
Niente da impegnare, la directory di lavoro pulita
$ git branch -a
* maestro
Attualmente hai la seguente situazione:
Hai fatto due commit nella filiale principale.
Supponiamo, hai trovato bug nei test del gioco, ma non vuoi affrontare il problema nella filiale principale perché non vuoi ancora fare casino con il design originale. Quindi puoi creare una nuova filiale chiamata bugfix:
$ git branch bugfix
Ora se controlli tutti i rami:
$ git branch -a
risoluzione del problema
* maestro
Ora hai creato una nuova filiale chiamata bugfix. La situazione può essere visualizzata come questa:
Tuttavia, la stella (*) accanto al ramo principale significa che sei ancora nel maestro. Se apporti le modifiche, andrà comunque nel ramo principale. È possibile utilizzare il comando checkout per modificare i rami:
$ git checkout bugfix
Passato a Branch 'Bugfix'
Puoi controllare quale ramo stai usando con lo stato o il comando "Branch -a":
$ git status
Su Branch Bugfix
Niente da impegnare, la directory di lavoro pulita
$ git branch -a
* risoluzione del problema
maestro
Ora, fissiamo il bug:
$ echo "Bug Fix 1" >> Design.TXT
$ git aggiungi -a
$ git commit -m "c2: bug fisso 1"
Hai creato una situazione come questa:
Il ramo principale non ha il cambiamento C2. Puoi facilmente verificarlo controllando la storia dei due rami.
Innanzitutto, la storia della filiale Bugfix:
$ git status
Su Branch Bugfix
Niente da impegnare, la directory di lavoro pulita
$ git log --oneline
E8F615B C2: bug corretto 1
6A09BD6 C1: file di progettazione modificato
5F18d89 C0: aggiunto file di progettazione
Quindi puoi passare a Master Branch e controllare la sua storia:
$ git checkout master
Passato a Branch 'Master'
$ git status
Su Branch Master
Niente da impegnare, la directory di lavoro pulita
$ git log --oneline
6A09BD6 C1: file di progettazione modificato
5F18d89 C0: aggiunto file di progettazione
Puoi vedere il ramo principale non ha le modifiche alla filiale di bugfix.
Puoi sempre creare una nuova filiale dal ramo corrente in cui ti trovi. Supponiamo che tu voglia creare un altro ramo che contenga caratteristiche sperimentali. È possibile creare il ramo da Master e aggiungere funzionalità sperimentali:
$ git status
Su Branch Master
Niente da impegnare, la directory di lavoro pulita
$ git branch sperimentale
$ git checkout sperimentale
Passato al ramo "sperimentale"
$ git status
Su ramo sperimentale
Niente da impegnare, la directory di lavoro pulita
$ echo "Aggiunta di funzionalità di esperimento" >> design.TXT
$ git aggiungi -a
$ git commit -m "c3: funzionalità sperimentali aggiunte"
[sperimentale 637bc20] C3: aggiunte caratteristiche sperimentali
1 file modificato, 1 inserzione (+)
Se controlli la storia del tuo ramo sperimentale, vedrai:
$ git status
Su ramo sperimentale
Niente da impegnare, la directory di lavoro pulita
$ git log --oneline
637bc20 C3: aggiunte funzionalità sperimentali
6A09BD6 C1: file di progettazione modificato
5F18d89 C0: aggiunto file di progettazione
Noterai che non hai il commit C2 che è stato creato in Bugfix Branch. Poiché il ramo sperimentale è creato dal ramo principale, non vede le modifiche a bugfix. Hai la seguente situazione:
Conclusione
Congratulazioni! Hai imparato a ramificare.
I rami Git sono facili e veloci da fare. È uno dei motivi alla base della popolarità di Git. Se vuoi diventare un utente GIT abile, devi diventare abile nella ramificazione Git.
https: // git-scm.com/book/en/v2/git-branching-basic-ranch-and-merging