Ver o histórico de um arquivo no Magit?

Respostas:

115

Desde magit 2.1: magit-log-buffer-file(conforme comentário abaixo)

Antes do magit 2.1: magit-file-logé o que você está procurando. Ele irá mostrar a você todos os commits para o arquivo no buffer atual na visualização do log magit padrão.

Ragge
fonte
9
Desde magit 2.1, magit-file-logfoi renomeado paramagit-log-buffer-file
Anton I. Sipos
9
Infelizmente, magit-log-buffer-filenão restringe a exibição de cada commit apenas para aquele arquivo.
Robin Green de
4
@CatalinHritcu Funciona bem exibindo todos os commits que afetam aquele arquivo, mas não restringe a exibição de cada commit apenas para aquele arquivo.
wilkystyle
5
A maneira mais conveniente que encontrei até agora é invocar magit-log-buffer-filee então executar magit-ediff-dwim(vinculado ao atalho "e" no Spacemacs) no commit de sua escolha. Isso mostrará uma janela com dois painéis com alterações destacadas.
Juraj Martinka
1
Claro o que @ robin-verde e @wilkystyle está descrevendo, mas talvez as teclas l, -ue lvai ajudar depoismagit-log-buffer-file
dickmao
33

Abra seu magit-statusbuffer, digitando M-x magit-status(eu costumava ter esse limite C-. C-gporque é usado o tempo todo. Hoje em dia, eu uso o Spacemacs, então é <SPC> g s)

  1. Digite lpara obter a opção de visualização do registro
  2. Digite --para definir a opção "Limitar a arquivos" (costumava ser =f)
  3. Digite o caminho do arquivo para o qual deseja ver o histórico
  4. Digite lpara ver o log da filial atual

Se estiver usando o Spacemacs, você pode obter o histórico do arquivo atualmente visitado usando <SPC> g f h

Bryan Ash
fonte
1
Acho que a etapa 2 é agora --( Magit 20200112.2023, Git 2.20.1, Emacs 26.1, gnu/linux)
Liam
1
Legal, funciona também com arquivos que foram deletados em algum momento.
Günter Zöchbauer
11

Em seu *magit: <project>*buffer, use lpara entrar no modo de registro e pressione fpara ser solicitado um nome de arquivo.

Bart Vandendriessche
fonte
3

Eu não sei um caminho. Eu simplesmente uso o M-x vc-print-logque parece realizar a mesma façanha. No entanto, não é uma forma integrada de magit.

sp3ctum
fonte
2

Se o magit ( manual do usuário ) não tiver esse recurso, você pode dar uma olhada em outro modo Emacs e adicionar sua própria git-log-filefunção:

(defun git-log-file ()
  "Display a log of changes to the marked file(s)."
  (interactive)
  (let* ((files (git-marked-files))
         (buffer (apply #'git-run-command-buffer "*git-log*" "git-rev-list" \
"--pretty" "HEAD" "--" (git-get-filenames files))))  (with-current-buffer buffer
      ; (git-log-mode)  FIXME: implement log mode
      (goto-char (point-min))
      (setq buffer-read-only t))
    (display-buffer buffer)))
VonC
fonte
Ou apenas useC-x v l
phils
Estou recebendo a seguinte mensagem:Symbol’s function definition is void: git-marked-files
alper
1
@alp 7 anos depois, esse problema estaria melhor representado em sua própria pergunta, com a versão exata do SO, eclipse e plugin mágico.
VonC