Close

Impara a creare branch con Bitbucket Cloud

Obiettivo

Questo tutorial ti insegnerà le basi per creare, lavorare, rivedere e unire branch usando Git e Bitbucket Cloud.

Ora

35 minuti

Pubblico

Conosci già il flusso di lavoro di base di Git

Questo tutorial fa per te se conosci già il flusso di lavoro di base di Git, tra cui le procedure per:

  • Clonare: copiare il repository remoto in Bitbucket Cloud sul tuo sistema locale
  • Aggiungere o gestire temporaneamente: accettare le modifiche apportate e prepararle per aggiungerle alla tua cronologia git
  • Eseguire il commit: aggiungere file nuovi o modificati alla cronologia git per il repository
  • Eseguire un pull: apportare le nuove modifiche che altri hanno aggiunto al repository nel tuo repository locale
  • Eseguire un push: inviare le modifiche dal tuo sistema locale al repository remoto

Se non conosci le nozioni di base di Git, non preoccuparti, dai un'occhiata al nostro tutorial Impara Git con Bitbucket Cloud e sarai pronto in pochissimo tempo.

Perché la ramificazione è importante

La ramificazione è uno dei modi migliori per ottenere il massimo da Git per il controllo delle versioni. La ramificazione in Git ti consente di:

  • Avere diversi team che lavorano contemporaneamente da un unico repository.
  • Avere membri del team in qualsiasi parte del mondo che utilizzano Bitbucket Cloud per collaborare.
  • Avere più linee di sviluppo in esecuzione contemporaneamente indipendentemente l'una dall'altra senza bisogno di blocchi del codice.

Esegui la configurazione


Dato che vogliamo che tu ti senta come se stessi lavorando in un team, in un repository Bitbucket comune, ti faremo eseguire un fork di un repository pubblico fornito da noi.

Che cosa significa eseguire un fork?

Il fork è un altro modo per salvare un clone o una copia. Il termine "eseguire un fork" (in programmazione) deriva da una chiamata di sistema Unix che crea una copia di un processo esistente. Quindi, a differenza di un branch, un fork è indipendente dal repository originale. Se il repository originale viene eliminato, il fork rimane. Se esegui un fork di un repository, ottieni quel repository e tutti i suoi branch.

1. Vai a tutorials/tutorials.git.bitbucket.org

2. Clicca su + > Fork this repository (+ > Esegui fork di questo repository) sul lato sinistro dello schermo.

3. Modifica il nome in modo che sia univoco per il tuo team, quindi clicca su Repository fork (Fork del repository).

4. Crea una directory per il repository in cui sia facile navigare. Potresti scegliere qualcosa di simile a questo:

Logo di Bitbucket
Scopri la soluzione

Impara a utilizzare Git con Bitbucket Cloud

Logo Git
materiale correlato

Comandi Git

$ mkdir test-repositories $ cd test-repositories/ $ test-repositories

L'esempio precedente crea la directory test-repositories utilizzando il comando mkdir (make directory) e passa a tale directory utilizzando il comando cd (change directory).

5. Clona il repository di cui hai eseguito il fork nella directory che hai appena creato. Dovrebbe avere il seguente aspetto:

$ git clone https://dstevenstest@bitbucket.org/dstevenstest/mygittutorial.bitbucket.io.git     Cloning into 'mygittutorial.bitbucket.io'...     remote: Counting objects: 12392, done.     remote: Compressing objects: 100% (12030/12030), done.     remote: Total 12392 (delta 8044), reused 564 (delta 360)     Receiving objects: 100% (12392/12392), 2.72 MiB | 701.00 KiB/s, done.     Resolving deltas: 100% (8044/8044), done. $ cd mygittutorial.bitbucket.io/

Che clona il repository utilizzando il comando git clone e crea la directory creata dal clone mygittutorial.git.bitbucket.io.

Crea un branch e modifica qualcosa utilizzando il flusso di lavoro ramificato

Aggiungerai una citazione sul tuo sito web in questo branch.

1. Crea un branch con il comando git branch.

$ git branch test-1

2. Esegui il checkout del branch che hai appena creato usando il comando git checkout.

$ git checkout test-1 Switched to branch 'test-1'

3. Elenca i branch di cui disponi localmente usando il comando git branch.

$ git branch   main   * test-1

4. Effettua un aggiornamento al file editme.html aggiungendo una citazione. Puoi utilizzare qualcosa di simile a quanto segue:

This is a quote, and I like it.
   A quote: The Art of Quoting 

5. Aggiungi quella modifica.

git add editme.html

Nota: la tua modifica non è stata salvata nella cronologia di Git ma è in stato di attesa. L'abbiamo appreso in Salvare le modifiche.

6. Conferma la modifica con un messaggio di commit descrittivo.

git commit editme.html -m'added a new quote' [test-1 063b772] added a new quote 1 file changed, 3 insertions(+), 3 deletions(-)

Nota: ora le modifiche fanno parte della cronologia di Git come singolo "commit". Lo abbiamo appreso in Salvare le modifiche.

7. Invia la modifica a Bitbucket usando il comando git push.

git push fatal: The current branch test-1 has no upstream branch. To push the current branch and set the remote as upstream, use   git push --set-upstream origin test-1

Vedrai un errore perché la prima volta che apri un nuovo branch che hai creato localmente devi designare tale branch.

8. Esegui il push del branch e apporta modifiche usando il comando git push branch.

$ git push origin test-1 Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 363 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: remote: Create pull request for test-1: remote: https://bitbucket.org/dstevenstest/dans.git.bitbucket.org/pull-requests/new?source=test-1&t=1 remote: To https://bitbucket.org/dstevenstest/dans.git.bitbucket.org.git * [new branch] test-1 -> test-1

Questo indica al sistema che il repository di origine è la destinazione di questo nuovo branch.

9. Apri il tuo repository tutorial e clicca su Branch. Ora dovresti vedere sia il branch main sia il branch test-1. Dovrebbe avere il seguente aspetto:

Da git repository centrale a git repository locale

Crea, recupera e controlla un branch remoto

Quando lavori in un team, ti capiterà di richiamare o recuperare i branch creati da altri membri del team ed eseguire il push su Bitbucket. Questo esempio ti fornirà alcune delle nozioni di base per creare e lavorare con i branch creati da altri.

1. Vai al tuo repository dei tutorial in Bitbucket e clicca su Branch. Dovresti vedere quanto segue:

Tutorial sui branch

2. Clicca su Crea branch, assegna un nome al branch test-2 e clicca su Crea.

3. Copia il comando git fetch nella finestra di dialogo di checkout del branch. Sarà probabilmente simile a quanto segue:

$ git fetch && git checkout test-2 From https://bitbucket.org/dstevenstest/dans.git.bitbucket.org * [new branch] test-2 -> origin/test-2 Branch test-2 set up to track remote branch test-2 from origin. Switched to a new branch 'test-2'

4. Usa il comando git branch nel tuo terminale. Dovresti vedere un elenco di branch simile a questo:

$ git branch   main   test-1 * test-2

Il branch con l'asterisco * è il branch attivo. Questo è fondamentale da ricordare quando lavori in un flusso di lavoro ramificato.

5. Usa il comando git status e vedrai qualcosa del genere:

$ git status On branch test-2 Your branch is up-to-date with 'origin/test-2'. nothing to commit, working tree clean

Puoi vedere in che branch ti trovi e che il branch è attualmente aggiornato con il branch remoto (di origine).

6. Usa il comando git checkout per riportare l'attenzione sull'altro branch. L'output dovrebbe avere il seguente aspetto:

$ git checkout test-1 Switched to branch 'test-1' Your branch is ahead of 'origin/test-1' by 3 commits. (use "git push" to publish your local commits)

Una delle cose più importanti da ricordare quando lavori con i branch è che devi assicurarti che il branch a cui stai apportando le modifiche sia il branch corretto.

Invia, modifica e crea una pull request

Ora è il momento di far esaminare la tua prima modifica e incorporare il branch.

1. Clicca su + > Create pull request (+ > Crea richiesta di pull). Puoi vedere il tuo branch test-1 come branch di origine e main nel branch di destinazione.

Poiché abbiamo creato questo repository eseguendo il fork di un repository esistente, la destinazione è impostata sul branch principale del repository di cui abbiamo eseguito il fork.

Per correggere questo problema dovrai cambiare il branch di destinazione del repository (il branch in cui unirai le modifiche) da tutorials/tutorials.git.bitbucket.org al tuo repository.

Pull request

Aggiungerai anche revisori del tuo team alla pull request. Maggiori informazioni sulle pull request

2. Clicca su Create pull request (Crea richiesta di pull).

3. Scrivi un commento nella richiesta di pull selezionando una riga nel diff (l'area in cui è visualizzata la modifica apportata al file editme.html).

4. Clicca su Approva in alto a sinistra nella pagina. Ovviamente, in una vera richiesta di pull avresti dei commenti da parte dei revisori

5. Clicca su Esegui merge.

6. (Facoltativo) Aggiorna il messaggio di commit con maggiori dettagli.

7. Seleziona la strategia di merge Merge commit (Commit di merge) tra le due opzioni. Scopri di più su questi due tipi di strategie di merge.

  • Merge commit: mantiene tutti i commit dal tuo branch di origine e li rende parte del branch di destinazione. Questa opzione equivale a inserire git merge —no-ff nella riga di comando.
  • Squash: combina i tuoi commit quando unisci il branch sorgente nel branch di destinazione. Questa opzione equivale a inserire git merge —squash nella riga di comando.

8. Clicca su Commit e vedrai come il branch per cui hai appena eseguito il merge si inserisce nel più ampio schema di modifiche.

Elimina un branch e inserisci il principale nel branch operativo locale

Ora hai seguito il flusso di lavoro di base per la ramificazione e la tua modifica è nel branch principale. L'ultima cosa che impareremo è come eliminare il branch che hai appena unito, estrarre il branch principale aggiornato e unire il branch principale aggiornato nel tuo branch test-2.

Perché eliminare il branch?

Ricorda che la ramificazione in Git è diversa da SVN o sistemi di controllo delle versioni simili poiché utilizza i branch sia come branch di lunga durata, come branch principale e di sviluppo, sia come branch di sviluppo a breve termine, come gli esempi che utilizziamo in questo tutorial. Per questo motivo, non è una cattiva idea eliminare i branch locali per mantenere più pulito l'ambiente locale.

Perché estrarre il principale e fonderlo in test-2?

Lo stiamo usando come esempio del tuo lavoro su un repository in cui sta lavorando un altro membro del team. È una buona idea inserire di tanto in tanto le modifiche nel tuo branch di lavoro per evitare conflitti di fusione nelle pull request.

1. Apri il tuo terminale ed esegui il comando git status ; il risultato dovrebbe essere simile a questo:

$ git status On branch test-1 nothing to commit, working tree clean

Puoi vedere che ti trovi nel branch che hai appena usato per apportare le modifiche e che non sono state apportate modifiche. Siamo pronti a sbarazzarci di quel branch ora che abbiamo finito questo lavoro.

2. Passa al branch main eseguendo il comando git checkout main . Il risultato dovrebbe avere il seguente aspetto:

git checkout main Switched to branch 'main' Your branch is up-to-date with 'origin/main'.

Hai notato che il messaggio dice che sei aggiornato? Questo è solo il tuo branch locale. Lo sappiamo perché abbiamo appena unito una modifica in principale e non l'abbiamo trasferita dal repository remoto al nostro sistema locale. Questo è quello che faremo dopo.

3. Esegui il comando git pull . Il risultato dovrebbe avere il seguente aspetto:

$ git pull remote: Counting objects: 1, done. remote: Total 1 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (1/1), done. From https://bitbucket.org/dstevenstest/dans.git.bitbucket.org 2d4c0ab..dd424cb main -> origin/main Updating 2d4c0ab..dd424cb Fast-forward editme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)

Quello che è successo è che quando estrai le modifiche dal repository remoto, git esegue una fusione rapida per integrare le modifiche che hai apportato. Elenca anche quanti file e righe in quel file sono stati modificati.

4. Esegui il comando git branch -d {branch_name} per rimuovere il branch test-1. Il risultato dovrebbe avere il seguente aspetto:

$ git branch -d test-1 Deleted branch test-1 (was 063b772)

Puoi vedere che ha eliminato il branch e qual è stato l'ultimo hash di commit per quel branch. Questo è il modo sicuro per eliminare un branch perché git non ti permetterà di eliminare il branch se presenta modifiche non salvate. Devi però sapere che ciò non impedirà l'eliminazione di modifiche salvate nella cronologia di git ma non unite in un altro branch.

5. Passa al branch test-2 usando il comando git checkout.

$ git checkout test-2 Switched to branch 'test-2' Your branch is up-to-date with 'origin/test-2'.

6. Esegui il merge del branch main nel tuo branch di lavoro usando il comando git merge main test-2. Il risultato dovrebbe avere il seguente aspetto:

$ git merge main test-2 Updating 2d4c0ab..dd424cb Fast-forward editme.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)

È importante ricordare quanto segue:

  • Il branch attivo è importante. Se vuoi unire il principale in test-2, test-2 deve essere sottoposto a checkout (attivo). Lo stesso vale se vuoi unire test-2 al principale: devi fare il checkout del principale.
  • Per vedere quale branch è attivo in qualsiasi momento usa git branch e il branch attivo presenterà un asterisco, oppure, usa git status per sapere in quale branch ti trovi e se ci sono modifiche locali in sospeso.

Ci auguriamo che tu abbia imparato qualcosa sulla ramificazione e sui comandi coinvolti. Rivediamo gli argomenti che abbiamo trattato:

Rivedi il flusso di lavoro di ramificazione


Il flusso di lavoro di Git Feature Branch è un modo efficiente per iniziare a lavorare con il tuo team in Bitbucket. In questo flusso di lavoro, tutto lo sviluppo delle funzionalità avviene in branch separati dal branch principale. Di conseguenza, più sviluppatori possono lavorare sulle proprie funzionalità senza toccare il codice principale.

Inizia con il branch principale

Questo flusso di lavoro ti aiuta a collaborare al tuo codice con almeno un'altra persona. Se il tuo Bitbucket e i tuoi repository locali sono aggiornati, sei pronto per iniziare.

Crea un nuovo branch

Usa un branch separato per ogni funzione o problema su cui lavori. Dopo aver creato un branch, esegui un checkout a livello locale, in modo che tutte le modifiche apportate avvengano su quel branch.

Aggiorna, aggiungi, conferma ed esegui il push delle modifiche

Lavora sulla funzione ed esegui il commit come faresti ogni volta che usi Git. Quando sei pronto, esegui il push dei tuoi commit, aggiornando il branch delle funzionalità su Bitbucket.

Ottieni una revisione del codice

Per ottenere feedback sul tuo codice, crea una pull request in Bitbucket. Da lì, puoi aggiungere revisori e assicurarti che tutto sia a posto prima della fusione.

Risolvi il feedback

Ora i tuoi colleghi possono commentare e approvare. Risolvi i loro commenti a livello locale, conferma ed esegui il push delle modifiche suggerite in Bitbucket. I tuoi aggiornamenti vengono visualizzati nella pull request.

Unisci il tuo branch

Prima della fusione, potrebbe essere necessario risolvere i relativi conflitti se altri hanno apportato modifiche al repository. Quando la tua pull request è approvata e non contiene conflitti, puoi aggiungere il tuo codice al branch principale. Esegui la fusione dalla pull request in Bitbucket.

Questo tutorial è limitato nella capacità di mostrare in che modo i branch rendono i team più efficaci. Esistono diversi approcci alla ramificazione e alcuni di questi sono illustrati in: Confronto dei flussi di lavoro.


Condividi l'articolo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Le persone collaborano utilizzando una parete piena di strumenti

Blog di Bitbucket

Illustrazione su Devops

Percorso di apprendimento DevOps

Funzione Demo Den per demo con esperti Atlassian

Come Bitbucket Cloud funziona con Atlassian Open DevOps

Iscriviti alla nostra newsletter DevOps

Thank you for signing up