log git de uma única revisão

181

Eu tenho um commit c. Quero obter o conjunto de alterações dessa metainformação exata de commit c + e de nenhuma outra. Existe uma maneira mais simples git log -p c^..cdo que fazer isso?

zedoo
fonte

Respostas:

269

Você pode usar show:

git show commit_id
Michał Trybus
fonte
60

A resposta de Michal Trybus é a melhor para simplificar. Mas se você não quer o diff em sua saída, sempre pode fazer algo como:

git log -1 -U c

Isso fornecerá o log de confirmação e você terá controle total sobre todas as opções de log do git para fins de automação. No seu exemplo, você disse que queria o conjunto de alterações. A maneira mais legível de fazer isso seria:

git log --name-status --diff-filter="[A|C|D|M|R|T]" -1 -U c

Ou, se você estiver usando uma versão git maior que 1.8.X, seria:

git log --name-status --diff-filter="ACDMRT" -1 -U c

Isso fornecerá resultados semelhantes a:

commit {c}
Author: zedoo <[email protected]>
Date: Thu Aug 2 {time-stamp}

   {short description}
D    zedoo/foo.py
A    zedoo/bar.py

É claro que você pode filtrar os eventos que achar melhor e formatar o retorno como desejar através dos comandos tradicionais do git-log, que estão bem documentados aqui .

SuperFamousGuy
fonte
14
Se você não quer o diff, faça git show --name-only <sha1>!
dbn
16
Se você simplesmente não quer o diff, use git show -s <commit>.
21714 moeffju
3
O que -1faz? Onde está documentado?
alex
1
@alex Veja a saída git help logna seção "Limite de confirmação". Ou consulte git-scm.com/book/en/v2/… -<number> limita o número de confirmações na saída.
LarsH
14

git log -p c -1 faz exatamente isso.

Robert Munteanu
fonte
4
O que -1 faz? Onde está documentado?
alex
4
@alex: O "-1" limita o número de entradas exibidas ao número especificado, é uma abreviação de -n 1ou --max-number=1e está documentado aqui .
Derpasaurus
0

Você pode usar para filtrar as alterações pela descrição do commit:

git log --grep='part_of_description' -p

onde git log --grep='part_of_description'selecione os commits que contêm 'part_of_description' e -pmostre o conjunto de alterações de cada commit

natigon
fonte