Mais
Como resolver conflitos de fusão em Git
Como posso resolver conflitos de fusão em Git?
4577
3
Como posso resolver conflitos de fusão em Git?
Tente:
git mergetool
Abre uma GUI que o conduz através de cada conflito, e você pode escolher como se fundir. Às vezes é necessário um pouco de edição manual depois, mas normalmente é suficiente por si só. É muito melhor do que fazer a coisa toda à mão, certamente.
Como por @JoshGlover comentário:
O comando não abre necessariamente uma GUI, a menos que você instale uma. Executando
git mergetool
para mim resultou na utilização dovimdiff
. Você pode instalar uma das seguintes ferramentas para utilizá-lo em seu lugar:meld
,opendiff
,kdiff3
,tkdiff
,xxdiff
,tortoisemerge
,gvimdiff
,diffuse
,ecmerge
,p4merge
,araxis
,vimdiff
,emerge
.Abaixo está o procedimento de amostra para utilizar o
vimdiff
para resolver conflitos de fusão. Baseado em este link.**Passo 1***: Execute os seguintes comandos no seu terminal
Isto irá definir o vimdiff como a ferramenta padrão de fusão.
**Passo 2***: Executar o seguinte comando no terminal
**Passo 3***: Você verá uma exibição vimdiff no seguinte formato
Estas 4 visões são
Você pode navegar entre estas vistas usando ctrl+w. Pode chegar directamente à vista MERGED usando ctrl+w seguido de j.
Mais informações sobre a navegação vimdiff aqui e aqui.
**Passo 4***. Você poderia editar a visão MERGED da seguinte maneira
Se você quiser obter alterações do REMOTE
Se você quiser obter mudanças da BASE
Se você quiser obter mudanças da LOCAL
**Passo 5***. Salvar, Sair, Comprometer e Limpar
:wqa
salvar e sair da vigit commit -m "mensagem"
Remover arquivos extras (por exemplo, *.origina) criados pela ferramenta diff.
Identificar que ficheiros estão em conflito (Git deve dizer-lhe isto).
Uma vez resolvido o conflito em um arquivo
git add the_file
.Uma vez resolvidos todos os conflitos, faça
git rebase --continue
ou qualquer comando O Git disse para fazer quando terminasses.Se você está fazendo pequenos commits frequentes, então comece por olhar os comentários de commit com
git log --merge
. Então ogit diff
irá mostrar-lhe os conflitos.Para conflitos que envolvem mais do que algumas linhas, é mais fácil ver o que está acontecendo em uma ferramenta GUI externa. Eu gosto do opendiff -- Git também suporta vimdiff, gvimdiff, kdiff3, tkdiff, meld, xxdiff, emerge da caixa e você pode instalar outros: O
git config merge.tool "sua.ferramenta"
irá definir sua ferramenta escolhida e então o `git mergetool' após uma mergetool falhada irá lhe mostrar os diffs no contexto.Cada vez que você editar um arquivo para resolver um conflito,
git add fileename
irá atualizar o índice e sua diff não mais o mostrará. Quando todos os conflitos forem resolvidos e seus arquivos tiverem sidogit add
-ed,git commit
completará sua fusão.