freeCodeCamp/guide/portuguese/miscellaneous/understand-how-to-use-git-m.../index.md

5.2 KiB

title localeTitle
Understand How to Use Git Merge Entenda como usar o Git Merge

Vamos dizer que você está trabalhando em um aplicativo semelhante ao Reddit, mas especificamente para trechos de código. Em um aplicativo desse tipo, você provavelmente teria um branch master que contém todos os recursos liberados, um branch dev que pode conter recursos que foram codificados, mas ainda não implementados. Cada desenvolvedor na equipe criará suas próprias filiais fora do dev ramo de características individuais. A estrutura do repositório seria algo como isto:

                                  --- Commit 3 --------- dev branch 
                                / 
 --- Commit 1 ---- Commit 2 ---------------------------- master branch 

Se você decidiu fundir o 3º commit ( Commit 3 ) no branch master branch dev , então seria tão simples quanto rodar um comando git merge porque o branch dev está atualizado com o branch master : todos os commits no branch master existem no branch dev . Você pode mesclar as ramificações executando os seguintes comandos:

git checkout dev 
 git merge master 

O resultado seria algo assim:

                                               --------- dev branch 
                                             / 
 --- Commit 1 ---- Commit 2 ---- Commit 3 -------------- master branch 

Agora você decide trabalhar no recurso de autenticação. Para trabalhar no recurso de autenticação, você cria outra ramificação com base na ramificação dev e decide chamá-la de auth . É assim que a estrutura do repo se parece:

                                                  ------ auth branch 
                                                / 
                                               --------- dev branch 
                                             / 
 --- Commit 1 ---- Commit 2 ---- Commit 3 -------------- master branch 

Se você tivesse que cometer quaisquer alterações na ramificação de auth , mesclá-las com a ramificação dev seria trivial porque ela está atualizada com a ramificação dev . Agora, enquanto você estava trabalhando no recurso de autenticação, um dos desenvolvedores terminou de codificar o recurso de realce de sintaxe e decidiu mesclá-lo com a ramificação dev . O repo se parece com isso agora:

                                                  --- Commit 5 --- auth branch 
                                                / 
                                               --- Commit 4 ------ dev branch 
                                             / 
 --- Commit 1 ---- Commit 2 ---- Commit 3 ------------------------ master branch 

Sua ramificação, na terminologia do Git, é agora um commit por trás do branch dev . Isso significa que você não pode simplesmente mesclar as duas ramificações: você deve atualizar sua ramificação auth com a ramificação dev . Isso pode ser feito com git merge !

Mesclar a ramificação de auth com a ramificação dev ou a ramificação dev com a ramificação master é direta e faz o que você espera, mas mesclar o inverso tem suas próprias idiossincrasias que não são intuitivas à primeira vista. Eu posso tagarelar sobre isso, ou posso mostrar outro grande diagrama do que aconteceria se você mesclasse o branch dev com o branch auth neste momento:

                                                  --- Commit 5 ----------- auth branch 
                                                /               / 
                                               --- Commit 4 -------------- dev branch 
                                             / 
 --- Commit 1 ---- Commit 2 ---- Commit 3 -------------------------------- master branch 

Veja o que eu fiz lá? Olhe para o diagrama por um segundo e tente entender o que está acontecendo aqui antes de prosseguir. Você essencialmente fez outro commit na ramificação auth com os commits da ramificação dev incluída. Mas tudo bem, certo? Afinal de contas, no final do dia, eu queria atualizar minha ramificação de auth com a ramificação dev e agora ela está atualizada? Sim. Mas deixe-me mostrar um diagrama para ilustrar explicitamente o que o outro diagrama implica: Sua ramificação de auth agora é assim:

    --- Commit 5 ------- Commit 4 ------- auth branch 
  /                / 
 ------ Commit 4 --- --------------------- dev branch 

Veja Agora? Você copiou o commit. Se você fosse mesclar ao ramo dev agora, seria algo como isto:

    --- Commit 5 ------- Commit 4 -------------------------------------- auth branch 
  /                /                  \ 
 ------- Commit 4 ----------------------- Commit 5 ---- Commit 4 -------- dev branch 

Você mesclou o mesmo commit duas vezes! Isto obviamente não terá repercussões para o seu próprio código, mas se você decidir analisar seus git logs , perceberá imediatamente como está suja sua história do git, com alguns commits sendo feitos repetidamente. Se você quisesse reverter para um commit, seria muito difícil decidir para qual commit reverter.

É preferível que você use o Git-Rebase .