Pergunta

Eu tenho que resolver algum conflito após uma git pull.

$ git pull
CONFLICT (rename/add): Renamed vignette_generator_mashed.h->vision_problem_8.h in 49423dd0d47abe6d839a783b5517bdfd200a202f. vision_problem_8.h added in HEAD
Added as vision_problem_8.h~HEAD_1 instead
Removed vignette_generator_cross_square.cc
Automatic merge failed; fix conflicts and then commit the result.

Então, eu pesquisei um pouco, e encontrei pessoas dizendo usando git mergetool. Mas aqui é o que eu tenho:

$ git mergetool
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
No files need merging
$ git mergetool opendiff
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
opendiff: file not found

Então, isso significa que eu tenho que instalar alguma coisa?

E se eu simplesmente querem a versão de git pull a tudo substituir?

Foi útil?

Solução

Você não precisa mergetool para isso. Ele pode ser resolvido muito facilmente manualmente.

O seu conflito é que seus commits locais adicionou um arquivo, vision_problem_8.h, que um controle remoto cometer também criou, por uma renomeação de vignette_generator_mashed.h. Se você executar ls -l vision_problem_8.h* provavelmente você vai ver várias versões deste arquivo que git preservou para você. Um deles será seu, outro deles será a versão remota. Você pode usar um editor ou qualquer ferramentas que você gostaria de resolver o conteúdo conflitantes. Quando estiver pronto, git add os arquivos afetados e se comprometem a concluir a mala.

Se você só quer usar o controle remoto cometer da versão, então você pode simplesmente mover a cópia que você não escrever no lugar e git add-lo.


Em relação às ferramentas de mesclagem, ter um olhar para git help mergetool. Basicamente, ele vai tentar correr cada uma das possibilidades incluídas até encontrar um, ou usar um que você explicitamente configurado.

Outras dicas

Eu acho que você só esqueceu switch "-t" na sua linha de comando. De acordo com a página git ajuda que significa "-t, --tool =" assim que faz o que você pretende.

Tente:

git mergetool -t gvimdiff

Claro que você pode usar sua ferramenta de merge preferido em vez de gvimdiff meu, fusão é muito grande ...

Se você executar o merge de um subdiretório do seu projeto, git irá executar o merge para todo seu projeto. No entanto, mergetool só pode ver (e fusão) arquivos em ou abaixo do diretório de trabalho. Então, se essa situação ocorrer, certifique-se que você está tentando executar o seu resolução de conflitos a partir do diretório de nível superior em seu projeto.

E se eu simplesmente querem a versão de git pull para tudo o substituir? Se você quer apenas que você deve usar:

 git fetch
 git reset --hard origin/your-branch-name
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top