Como resolvo conflitos seletivos usando suas alterações?


110

Meu git cherry-pick FOOproduziu um conflito.

Eu poderia examinar os arquivos conflitantes e excluir as linhas entre <<<<<<<e =======, e os próprios marcadores de conflito, mas espero que haja uma maneira mais fácil.

Acho que o svnequivalente foi escolher theirs-conflictresolver.

Como faço isso no git?

Eu não quero, git checkout --theirs <file>pois parece produzir o mesmo resultado em git checkout foo <file>vez de apenas ser git diff FOO~..FOO <file>aplicado.

Respostas:


196

Primeiro você deve desfazer sua escolha, tente executar este

git cherry-pick --abort

Em segundo lugar, tente escolher a dedo, mas desta vez você obtém as alterações deles, não as suas, então faça o seguinte:

git cherry-pick --strategy=recursive -X theirs {Imported_Commit}

6
Um pouco mais de informações sobre o que essas opções estão fazendo estão disponíveis em stackoverflow.com/questions/2268172/…
antak

27
Eu tentei isso exatamente: git cherry-pick --strategy=recursive -X theirs 1b92440e eu ainda estou solicitado para um conflito não resolvido: Unmerged paths: deleted by them: (file path). Qualquer ideia?
pilau

Uma maneira mais compreensível de redefinir após uma seleção / mesclagem com falha é usargit reset --merge
Pylinux

10
git cherry-pick --abort- esta é a maneira recomendada de desfazer a operação de seleção seletiva.
tommyk

Não tenho -Xopção em git cherry-pick. git 1.7.2.3.
Frank
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.