Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sincronizzazione dei Repository | Workflow Più Avanzati
Fondamenti di GitHub

Sincronizzazione dei Repository

Scorri per mostrare il menu

Come menzionato nel capitolo precedente, è necessario sincronizzare il branch locale con il repository remoto. Per farlo, occorre eseguire il comando git pull:

git pull
Tentativo di pull

Quando è stato eseguito il comando git pull, Git ha recuperato gli aggiornamenti ma ha rilevato che i branch locale e remoto 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:

git config pull.rebase false
Note
Nota

Tratteremo l'operazione di rebase più avanti in questo corso.

git pull
Conflitto di merge

Git ha tentato di unire automaticamente le modifiche locali e remote a README.md, ma si è verificato un conflitto di merge. Esaminiamo l'albero dei commit, che indica dove si sono verificati divergenze e conflitti:

git log --graph --oneline --all
Albero dei commit

Risoluzione del conflitto

Come puoi vedere, il nostro commit locale attuale e il commit nel branch remote 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:

vim README.md
Conflitti in Vim

Per risolvere questo conflitto, è possibile entrare in modalità inserimento premendo i, rimuovere i marcatori di conflitto e combinare queste modifiche nel modo seguente:

Conflitto risolto

Successivamente, premere il tasto Escape, digitare :wq e premere il tasto Invio per salvare le modifiche e 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:

git add README.md
git commit
Note
Nota

Dopo aver eseguito il comando git commit, si aprirà il text editor 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.

Commit del file unito

Infine, è possibile eseguire in sicurezza il comando git push e verificare che il three-way merge sia stato completato con successo visualizzando l'albero dei commit:

git log --graph --oneline --all
Albero dei commit

Riepilogo delle operazioni svolte in questi due capitoli:

  1. Simulazione della collaborazione apportando modifiche sia localmente che remotamente al file README.md;

  2. Prima è stata effettuata una modifica direttamente sul repository remoto, poi è stata apportata una modifica diversa localmente;

  3. Al tentativo di inviare le modifiche locali, si è verificato un conflitto perché il repository remoto conteneva aggiornamenti nuovi;

  4. Per risolvere la situazione, sono state scaricate le modifiche dal repository remoto, generando un merge conflict;

  5. Successivamente, il conflitto è stato risolto manualmente nel file README.md utilizzando l'editor Vim, le modifiche risolte sono state salvate e infine gli aggiornamenti finali sono stati inviati al repository remoto.

question mark

Quale comando imposta Git per usare merge (non rebase) durante git pull?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 2

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 3. Capitolo 2
some-alt