Forçar o Git a sempre escolher a versão mais recente durante uma fusão?
103
Vamos supor que eu mergegit e haja um conflito de mesclagem.
Minha pergunta é: como posso forçar o git a sempre escolher a versão mais recente do código em conflito para que não precise resolver o conflito manualmente?
mas eu quero fazer uma mesclagem (não substituir commits), mas, adicionalmente, resolver conflitos automaticamente.
Bartek
Respostas:
188
Não é exatamente a versão "mais nova", mas você pode dizer ao git para sempre preferir a versão no branch atual usando git merge branch -X ours, ou preferir a versão do branch sendo mesclado, usando git merge branch -X theirs.
De man git-merge:
nosso:
Esta opção força os pedaços conflitantes a serem resolvidos automaticamente de forma limpa, favorecendo nossa versão. As alterações da outra árvore que não conflitam com o nosso lado são refletidas no resultado da mesclagem. Para um arquivo binário, todo o conteúdo é obtido do nosso lado.
ours- theirs!! Basta dizer e você entenderá o que o comando faz! Eu amo o Git! : D
Haywire
14
nota: se você já usou git merge branch, você precisará git merge --abortantes de fazer isso.
John Dvorak de
1
Não funciona para mim. Ele ainda aborta a mesclagem. error: The following untracked working tree files would be overwritten by merge:Eu nem sei porque esses arquivos estão neste branch em primeiro lugar, mas eles deveriam ser sobrescritos, e git se recusa.
mcv
2
Se eles não estiverem rastreados, você precisa removê- git addlos (ou ) primeiro. Leia um pouco sobre git clean, pode ajudá-lo com isso.
Renato Zannon
Depois de executado git merge ours, se houver algum arquivo de conflito, haverá algum log? e eu poderia rastrear o de git merge ours?
Essa solução me ajudou a corrigir conflitos não mesclados quando tudo que eu queria era substituir pelo branch master. usei o git reset --hard master (do local)
Respostas:
Não é exatamente a versão "mais nova", mas você pode dizer ao git para sempre preferir a versão no branch atual usando
git merge branch -X ours
, ou preferir a versão do branch sendo mesclado, usandogit merge branch -X theirs
.De
man git-merge
:fonte
ours
-theirs
!! Basta dizer e você entenderá o que o comando faz! Eu amo o Git! : Dgit merge branch
, você precisarágit merge --abort
antes de fazer isso.error: The following untracked working tree files would be overwritten by merge:
Eu nem sei porque esses arquivos estão neste branch em primeiro lugar, mas eles deveriam ser sobrescritos, e git se recusa.git add
los (ou ) primeiro. Leia um pouco sobregit clean
, pode ajudá-lo com isso.git merge ours
, se houver algum arquivo de conflito, haverá algum log? e eu poderia rastrear o degit merge ours
?Eu uso isso,
fonte