Digamos que eu tenha um conflito de mesclagem. Eu vejo um arquivo em conflito como este:
Unstaged changes:
Unmerged Foo/bar/wibble/plop/elbow.txt
Posso clicar na guia aqui para abrir as alterações e talvez pular para um ponto dentro do arquivo para corrigir manualmente, mas se for um arquivo grande com muitos conflitos que podem consumir tempo.
Como posso pedir ao git, através do magit, que verifique a nossa ou a sua versão do arquivo, para resolver o conflito? Posso copiar o caminho e usá-lo Shift-:
para inserir um comando git personalizado, mas parece que deve haver um atalho de teclado para isso. Não consigo ver nada óbvio no menu magit ou no ?
pop-up.
magit-status
e pressionee
para iniciar a fusão de três vias comediff
. Outra alternativa é que, em um buffer de conflito, você pode ativar osmerge-mode
realce do conflito e executar a mesclagem interativa diretamente no seu buffer (não ediff). A ligação de chave do prefixo parasmerge-mode
comandos relacionados éC-c ^
; você pode pressionarC-c ^ C-h
para visualizar todas as combinações de teclas.k
entrar em conflito e escolher qual versão manter. Soa perfeito! github.com/magit/magit/issues/1643Respostas:
Não tenho certeza de quando esse recurso foi adicionado, mas faz isso perfeitamente:
Merging master
, eUnstaged changes
,Staged changes
. O arquivo em conflito está emUnstaged changes
k
para descartar as alterações (ou seja, as alterações em conflito)For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort
fonte
Existem várias soluções:
M-x smerge-ediff
. Ele o colocará no modo de resolução ediff, com quatro buffer aberto: o seu, o deles, a mesclagem e o buffer de comando. No buffer de comando, você usan
ep
para ir para o pedaço seguinte ou anterior, "a" ou "b" para aceitar a alteração do primeiro ou do segundo buffer, ou pode ir para o buffer de mesclagem e editá-lo ao seu gosto.e
na versão estável do magit, ouM-e
ouM-m
(magit-ediff-resolve
) no próximo ramo do magit, e então você se encontrará mais como no primeiro casoC-c ^ n
eC-c ^ p
o ajudará a passar de um pedaço para o anterior ou o próximo; você poderá editá-los ou usarC-c ^ o
para manter a versão "outra",C-c ^ m
manter a versão "minha",C-c ^ b
manter a antiga versão eC-c ^ a
para mantê-los todos.fonte