Tutorial Git


Git e {{title}}


Git Contribute


Git Avançado


Git Desfazer




Git Branch Merge


Mesclar ramificações

Temos a correção de emergência pronta e, portanto, vamos mesclar as ramificações mestre e de correção de emergência.

Primeiro, precisamos mudar para o branch master:

Exemplo

git checkout master
Switched to branch 'master'

Agora mesclamos o branch atual (mestre) com a correção de emergência:

Exemplo

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

Como o branch de correção de emergência veio diretamente do master, e nenhuma outra alteração foi feita no master enquanto estávamos trabalhando, o Git vê isso como uma continuação do master. Então ele pode "Fast-forward", apenas apontando o master e a correção de emergência para o mesmo commit.

Como master e Emergency-Fix ​​são essencialmente os mesmos agora, podemos deletar Emergency-Fix, pois não é mais necessário:

Exemplo

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

Mesclar conflito

Agora podemos passar para o hello-world-images e continuar trabalhando. Adicione outro arquivo de imagem (img_hello_git.jpg) e altere index.html, para que seja exibido:

Exemplo

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

Exemplo

<!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>

Agora, terminamos nosso trabalho aqui e podemos preparar e confirmar para este branch:

Exemplo

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

Vemos que index.html foi alterado em ambas as ramificações. Agora estamos prontos para mesclar as imagens hello-world no master. Mas o que acontecerá com as mudanças que fizemos recentemente no master?

Exemplo

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.

A mesclagem falhou, pois há conflito entre as versões para index.html. Vamos verificar o estado:

Exemplo

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

Isso confirma que há um conflito no index.html, mas os arquivos de imagem estão prontos e preparados para serem confirmados.

Então, precisamos corrigir esse conflito. Abra o arquivo em nosso editor:

Exemplo

<!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>

Podemos ver as diferenças entre as versões e editá-las como queremos:

Exemplo

<!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>

Agora podemos preparar index.html e verificar o status:

Exemplo

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

O conflito foi corrigido e podemos usar o commit para concluir a mesclagem:

Exemplo

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

E exclua o branch hello-world-images:

Exemplo

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

Agora você tem uma melhor compreensão de como funcionam as ramificações e a mesclagem. Hora de começar a trabalhar com um repositório remoto!

Teste-se com exercícios

Exercício:

Mescle o hello-youbranch com o branch atual:

git  hello-you