Como visualizar o histórico de arquivos no Git?

133

Com o Subversion, eu poderia usar o TortoiseSVN para visualizar o histórico / log de um arquivo.

Como posso fazer isso com o Git?

Basta procurar o registro do histórico de um arquivo específico e, em seguida, a capacidade de comparar as diferentes versões.

mrblah
fonte

Respostas:

156

Use git logpara visualizar o histórico de consolidação. Cada confirmação possui um especificador de revisão associado que é uma chave de hash (por exemplo, 14b8d0982044b0c49f7a855e396206ee65c0e787e b410ad4619d296f9d37f0db3d0ff5b9066838b39). Para visualizar a diferença entre dois commits diferentes, use git diffcom os primeiros caracteres dos especificadores de revisão de ambos os commits, assim:

# diff between commits 14b8... and b410...
git diff 14b8..b410
# only include diff of specified files
git diff 14b8..b410 path/to/file/a path/to/file/b

Se você deseja obter uma visão geral de todas as diferenças que ocorreram de confirmação para confirmação, use git logou git whatchangedcom a opção de patch:

# include patch displays in the commit history
git log -p
git whatchanged -p
# only get history of those commits that touch specified paths
git log path/a path/b
git whatchanged path/c path/d
cristão
fonte
7
Obrigado pela dica -p, que é super útil para descobrir quais revisões envolviam um pouco de código.
Christopher Pickslay
100

Parece que você deseja git diff e / ou git log . Também confira o gitk

gitk path/to/file
git diff path/to/file
git log path/to/file
baudtack
fonte
3
Aqui está outro aceno para o gitk, que fornece uma ótima maneira de procurar todos os instantâneos de um único arquivo em um repositório git.
Ray Brown
1
Por padrão, o gitk mostra o diff mais 10 linhas de contexto, mas e se você quiser ver um instantâneo de todo o arquivo? Simplesmente defina "Linhas de contexto" com um valor grande (por exemplo, 100000). Em seguida, você pode alternar entre confirmações e ver o arquivo inteiro em diferentes momentos. (Você também pode pesquisar dentro do arquivo.)
antinome
35

Eu gosto de usar o gitk name_of_file

Isso mostra uma boa lista das alterações que ocorreram em um arquivo em cada confirmação, em vez de mostrar as alterações em todos os arquivos. Torna mais fácil rastrear algo que aconteceu.

Gustavo Litovsky
fonte
30

você também pode usar o tig para um bom navegador de repositório git baseado em ncurses. Para visualizar o histórico de um arquivo:

tig path/to/file
user217433
fonte
29

Meu favorito é git log -p <filename>, que fornecerá um histórico de todos os commits do arquivo fornecido, bem como as diferenças de cada commit.

helicóptero
fonte
11

Muitos navegadores de histórico do Git, incluindo git log(e 'git log --graph'), gitk (em Tcl / Tk, parte do Git), QGit (em Qt), tig (interface de modo de texto para o git, usando ncurses), Giggle (em GTK +), TortoiseGit e git-chita suportam limitação de caminho (por exemplo gitk path/to/file).

Jakub Narębski
fonte
@ RobertVuković Eu sei que esta é uma pergunta antiga ... mas veja minha resposta abaixo!
brianc 23/01
4

Obviamente, se você quiser algo o mais próximo possível do TortoiseSVN, poderá usar o TortoiseGit .

Jörg W Mittag
fonte
Exceto que as extensões de shell do TortoiseSvn contêm um comando para mostrar o histórico de um único arquivo, enquanto o TortoiseGit não.
Neutrino
3

git log --all -- path/to/file Deveria trabalhar

Edson Medina
fonte
Não há nenhum link na minha resposta @ineersa
Edson Medina
1
Essa deve ser a resposta principal. Eu não gosto de usar ferramentas de GUI de
baixa
2

O TortoiseGit também fornece uma ferramenta de linha de comando para ver o histórico de um arquivo. Usando o PowerShell:

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
brianc
fonte