Como posso abrir uma revisão específica de um arquivo com o Magit?

43

É possível abrir uma revisão específica de um arquivo no Emacs com Magit sem alterar a ramificação atual?

Eu refiz algumas alterações locais em uma revisão em que as funções modificadas foram substituídas pela funcionalidade em um arquivo diferente. Gostaria de abrir a revisão antiga das minhas alterações em um buffer separado para poder comparar as alterações lado a lado.

Minha solução hacky atual foi executar git show <branch pre-rebase>:file > old_filee abrir old_fileno Emacs.

David Holm
fonte
1
O github.com/pidu/git-timemachine pode visualizar temporariamente um arquivo entre cada versão.
Kuanyui
1
@ kuanyui que uso, git-timemachinemas desde que meu código foi reformulado, não acho que funcione, pois o código antigo não faz parte do histórico do ramo atual?
David Holm

Respostas:

56

Você pode visualizar um arquivo para uma revisão específica usando M-x magit-find-file RET <filename> RET.

Ou você pode primeiro visualizar o diff para confirmação pressionando RET-o, navegando até o arquivo dentro do diff e pressionando RETnovamente.

Kyle Meyer
fonte
8
Isso funciona para mim; Aqui está o que eu faço: da versão atual do arquivo M-x magit-log-buffer-file, mova a linha para o commit desejado e, em seguida M-x magit-find-file. Então o valor padrão será esse commit. Eu tenho que dar o caminho para o arquivo, pois isso não é retirado do buffer de log.
Liam
@ tarso, Um pouco como o magit-find-file, mas onde eu só preciso selecionar a revisão para o arquivo do buffer atual. Já existe?
Ergosys 13/08/19
Sim, use- magit-find-filese a partir de um buffer de visita a arquivos e digite apenas RETno segundo prompt (o arquivo apropriado é oferecido como padrão).
tarsius 13/08/19
Obrigado pela informação e por todo o seu trabalho no Magit. Não foi muito difícil hackear uma função que pula essa pressionada tecla extra, então fico feliz até a próxima coceira.
Ergosys 14/08/19
29

É possível fazer com VC simples (embutido no Emacs), sem Magit. Digite C-x v ~e digite a versão desejada. Ele compreende tags e hashes SHA1, bem como os ~1sufixos comuns etc.

legoscia
fonte
Esta não é uma resposta para uma pergunta magit. Você postaria uma resposta C para uma pergunta Ruby?
18716 Bryan Ash #
4
@BryanAsh sim, se a solução em C for muito mais fácil.
Markus Strauss