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?

Respostas:



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 <zedoo@stackoverflow.com>
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 .


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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.