Como fazer check-out em um arquivo no magit?

16

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.

tenpn
fonte
3
Embora isso não responda diretamente à sua pergunta, mas pode ser útil. Mova o ponto no arquivo de conflito magit-statuse pressione epara iniciar a fusão de três vias com ediff. Outra alternativa é que, em um buffer de conflito, você pode ativar o smerge-moderealce do conflito e executar a mesclagem interativa diretamente no seu buffer (não ediff). A ligação de chave do prefixo para smerge-modecomandos relacionados é C-c ^; você pode pressionar C-c ^ C-hpara visualizar todas as combinações de teclas.
Tu Do
Também não encontro "nosso" ou "deles" no documento. magit.github.io/master/magit.html#Pushing-and-Pulling
Ehvince
1
Parece uma boa pergunta para abrir uma solicitação de recurso?
Ehvince
1
boa ideia @Ehvince, feito: github.com/magit/magit/issues/1643
tenpn
1
Oooh: na próxima versão do magit, você pode kentrar em conflito e escolher qual versão manter. Soa perfeito! github.com/magit/magit/issues/1643
tenpn

Respostas:

16

Não tenho certeza de quando esse recurso foi adicionado, mas faz isso perfeitamente:

  1. Mesclar um ramo em outro e encontrar um conflito
  2. No tampão magit, haverá secções para Merging master, e Unstaged changes, Staged changes. O arquivo em conflito está emUnstaged changes
  3. Na linha com o arquivo em conflito, pressione kpara descartar as alterações (ou seja, as alterações em conflito)
  4. No minibuffer, você verá a resposta:

For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort

Hut8
fonte
5

Existem várias soluções:

  • use smerge-ediff. No arquivo com o conflito, você executa 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ê usa ne ppara 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.
  • use ediff do magit, com ena versão estável do magit, ou M-eou M-m( magit-ediff-resolve) no próximo ramo do magit, e então você se encontrará mais como no primeiro caso
  • também existe o modo imersão, C-c ^ ne C-c ^ po ajudará a passar de um pedaço para o anterior ou o próximo; você poderá editá-los ou usar C-c ^ opara manter a versão "outra", C-c ^ mmanter a versão "minha", C-c ^ bmanter a antiga versão e C-c ^ apara mantê-los todos.
  • você pode usar o magit-find-file para abrir um arquivo como estava em algum commit.
Rémi
fonte
Eu não tinha visto que Tu Do já tinha mais a resposta que eu posto aqui. Sory
Rémi
Obrigado pela lista abrangente, mas acho que a resposta para "existe uma maneira concisa de obter a versão Nossa ou Thiers" é não. :(
tenpn 27/11/14