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.

Antak
fonte

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}
elhadi dp ıpɐɥ ן ǝ
fonte
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