Contenuti del Corso
Fondamenti di GitHub
Fondamenti di GitHub
Sincronizzazione dei Repository
Come menzionato nel capitolo precedente, è necessario sincronizzare il nostro branch locale con il repository remoto. Per farlo, bisogna eseguire il comando git pull
:
Quando abbiamo eseguito il comando git pull
, Git ha recuperato gli aggiornamenti ma ha rilevato che i nostri branch locale e remoto si sono divergenti, ovvero ci sono modifiche su entrambi i branch che devono essere riconciliate. Git non ha potuto procedere perché deve sapere come gestire queste differenze, quindi impostiamo l'opzione merge ed eseguiamo nuovamente il comando git pull
:
L'operazione di rebase verrà trattata più avanti in questo corso.
Git ha tentato di unire automaticamente le modifiche locali e remote al file README.md
, ma si è verificato un conflitto di merge. Esaminiamo l'albero dei commit, che indica dove si sono verificati divergenze e conflitti:
Risoluzione del conflitto
Come puoi vedere, il nostro commit locale attuale e il commit nel branch remoto main
condividono un antenato comune, ma divergono, portando al conflitto di merge che dobbiamo risolvere. Per farlo, apriremo il file README.md
nell'editor Vim:
Per risolvere questo conflitto, è possibile entrare in modalità inserimento premendo i
, rimuovere i marcatori di conflitto e combinare queste modifiche nel modo seguente:
Successivamente, premere il tasto Escape, digitare :wq
e premere il tasto Invio per salvare le modifiche ed uscire da Vim. Ora, per completare la fusione, il file README.md
deve essere aggiunto all'area di staging e poi committato utilizzando i rispettivi comandi:
Dopo aver eseguito il comando git commit
, si aprirà il editor di testo predefinito (molto probabilmente Vim). È possibile lasciare il messaggio di commit predefinito ed uscire da Vim nello stesso modo appena descritto, oppure modificare il messaggio e poi uscire.
Infine, è possibile eseguire in sicurezza il comando git push
e verificare che la fusione a tre vie sia avvenuta con successo visualizzando l'albero dei commit:
Analizziamo quanto fatto in questi due capitoli:
Abbiamo simulato la collaborazione apportando modifiche sia localmente che remotamente al file
README.md
;Abbiamo prima effettuato una commit direttamente nel repository remoto, poi abbiamo apportato una modifica diversa localmente;
Quando abbiamo provato a inviare le modifiche locali, abbiamo riscontrato un conflitto perché il repository remoto aveva nuovi aggiornamenti;
Per risolvere, abbiamo scaricato le modifiche dal repository remoto, il che ha generato un conflitto di merge;
Abbiamo quindi risolto manualmente il conflitto nel file
README.md
utilizzando l'editor Vim, effettuato la commit delle modifiche risolte e inviato con successo gli aggiornamenti finali al repository remoto.
Grazie per i tuoi commenti!