Git Tutorial


Git e {{title}}


Git Contribuisci


Vai avanzato


Vai Annulla




Git Branch Merge


Unisci rami

Abbiamo la correzione di emergenza pronta, quindi uniamo i rami master e correzione di emergenza.

Innanzitutto, dobbiamo passare al ramo principale:

Esempio

git checkout master
Switched to branch 'master'

Ora uniamo il ramo corrente (master) con la correzione di emergenza:

Esempio

git merge emergency-fix
Updating 09f4acd..dfa79db
Fast-forward
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Dal momento che il ramo di correzione di emergenza è arrivato direttamente da master e non sono state apportate altre modifiche a master mentre stavamo lavorando, Git lo vede come una continuazione di master. Quindi può "avanti veloce", semplicemente puntando sia il master che la correzione di emergenza allo stesso commit.

Poiché il master e la correzione di emergenza ora sono essenzialmente gli stessi, possiamo eliminare la correzione di emergenza, poiché non è più necessaria:

Esempio

git branch -d emergency-fix
Deleted branch emergency-fix (was dfa79db).

Unisci conflitto

Ora possiamo passare alle immagini di ciao-mondo e continuare a lavorare. Aggiungi un altro file immagine (img_hello_git.jpg) e cambia index.html, in modo che lo mostri:

Esempio

git checkout hello-world-images
Switched to branch 'hello-world-images'

Esempio

<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>

<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>

</body>
</html>

Ora, abbiamo finito con il nostro lavoro qui e possiamo mettere in scena e impegnarci per questo ramo:

Esempio

git add --all
git commit -m "added new image"
[hello-world-images 1f1584e] added new image
 2 files changed, 1 insertion(+)
 create mode 100644 img_hello_git.jpg

Vediamo che index.html è stato modificato in entrambi i rami. Ora siamo pronti per unire le immagini di ciao-mondo in master. Ma cosa accadrà alle modifiche che abbiamo fatto di recente in master?

Esempio

git checkout master
git merge hello-world-images
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

L'unione non è riuscita, poiché esiste un conflitto tra le versioni per index.html. Controlliamo lo stato:

Esempio

git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Changes to be committed:
        new file:   img_hello_git.jpg
        new file:   img_hello_world.jpg

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   index.html

Ciò conferma che c'è un conflitto in index.html, ma i file di immagine sono pronti e messi in scena per essere salvati.

Quindi dobbiamo risolvere quel conflitto. Apri il file nel nostro editor:

Esempio

<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>

<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<<<<<<< HEAD
<p>This line is here to show how merging works.</p>
=======
<p>A new line in our file!</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>
>>>>>>> hello-world-images

</body>
</html>

Possiamo vedere le differenze tra le versioni e modificarle come vogliamo:

Esempio

<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>

<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space" style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>This line is here to show how merging works.</p>
<div><img src="img_hello_git.jpg" alt="Hello Git" style="width:100%;max-width:640px"></div>

</body>
</html>

Ora possiamo mettere in scena index.html e controllare lo stato:

Esempio

git add index.html
git status
On branch master
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:
        new file:   img_hello_git.jpg
        new file:   img_hello_world.jpg
        modified:   index.html

Il conflitto è stato risolto e possiamo usare commit per concludere l'unione:

Esempio

git commit -m "merged with hello-world-images after fixing conflicts"
[master e0b6038] merged with hello-world-images after fixing conflicts

Ed elimina il ramo hello-world-images:

Esempio

git branch -d hello-world-images
Deleted branch hello-world-images (was 1f1584e).

Ora hai una migliore comprensione di come funzionano i rami e l'unione. È ora di iniziare a lavorare con un repository remoto!

Mettiti alla prova con gli esercizi

Esercizio:

Unisci il hello-youramo con il ramo corrente:

git  hello-you