Git: Veja meu último commit

390

Eu só quero ver os arquivos que foram confirmados no último commit exatamente como eu vi na lista quando o fiz git commit. Infelizmente, procurando por

git "last commit" log

no Google não me leva a lugar algum. E

git diff HEAD^..HEAD

não é o que eu preciso, é claro, uma vez que vomita a coragem da mudança também.

Dan Rosenstark
fonte
35
Obrigado, eu realmente precisava git diff HEAD^..HEAD!
Amin

Respostas:

376

Conforme determinado por comentários, parece que o OP está procurando

$ git log --name-status HEAD^..HEAD

Isso também está muito próximo da saída que você obteria svn statusou da svn log -vqual muitas pessoas vindas do subversion para o git estão familiarizadas.

--name-statusé a chave aqui; como observado por outras pessoas em esta pergunta, você pode usar git log -1, git showe git diffpara obter o mesmo tipo de saída. Pessoalmente, costumo usar git show <rev>as revisões individuais.

Mike Seplowitz
fonte
Admito que os comentários não são a melhor maneira de tornar minha pergunta mais clara :) obrigado MikeSep
Dan Rosenstark
4
Eu acho que isso dá o último commit, não? Então, para o meu último que eu fariagit log --stat --author nroose -n 1
nroose
11
E pode ser abreviado e encurtado com show de git-status --name --oneline
jasonleonhard
Isso é tão óbvio! Eu deveria ter adivinhado que é algo tão simples, pois esse é o tipo de consulta que acontece o tempo todo.
Scott Biggs
11
No caso do uso de impulso vigor este comand irá mostrar-lhe o último remendo em vez do mais recente (timewise) cometer ... pode ser complicado em alguns casos de uso
Olix
208

Use o git show :

git show --summary

Isso mostrará os nomes dos arquivos criados ou removidos, mas não os nomes dos arquivos alterados . O git showcomando suporta uma ampla variedade de formatos de saída que mostram vários tipos de informações sobre confirmações.

Greg Hewgill
fonte
11
@jamessan git show --statestá próximo, mas não existe uma visualização em que a palavra 'modificado' ou 'adicionado' apareça ao lado do arquivo?
Dan Rosenstark
3
Se você quiser apenas os nomes dos arquivos (até menos que --stat), também poderá procurar --name-statuse --name-onlyalternar.
Mike Seplowitz
11
@ MikeSep, é realmente o que eu precisava. Se você der uma resposta, marcarei a melhor resposta, pois para mim foi. Eu estou usandogit log --name-status HEAD^..HEAD
Dan Rosenstark
Esta é de longe a solução mais simples das oferecidas.
Matthew
101
git log -1 --stat

poderia trabalhar

knittl
fonte
44

Para ver o último commit

git log -1

Para ver os 2 últimos commit

git log -2

etc ....

Ahmed Al Bermawy
fonte
11
Mas a pergunta dizia "... quero ver os arquivos que foram confirmados no último commit" .
Peter Mortensen
42

De longe, o comando mais simples para isso é:

git show --name-only

Como lista apenas os arquivos no último commit e não dá a você toda a coragem

Um exemplo da saída sendo:

commit  fkh889hiuhb069e44254b4925d2b580a602
Author: Kylo Ren <[email protected]>
Date:   Sat May 4 16:50:32 2168 -0700

Changed shield frequencies to prevent Millennium Falcon landing

 www/controllers/landing_ba_controller.js             
 www/controllers/landing_b_controller.js            
 www/controllers/landing_bp_controller.js          
 www/controllers/landing_h_controller.js          
 www/controllers/landing_w_controller.js  
 www/htdocs/robots.txt                        
 www/htdocs/templates/shields_FAQ.html       
nickhar
fonte
7
Considere em --name-statusvez de --name-only.
Acumenus 23/11
5
O problema está aí: o império está usando php na grade de defesa!
PTIM
3
Melhor exemplo que eu já vi no stackoverflow! "Esses não são os commits que você está procurando."
Scott Biggs
22
git log -1 --name-status

Faz o trabalho para mim.

micrub
fonte
21

Para ver as últimas alterações de confirmação

git show HEAD

Ou para ver a segunda última alteração de confirmação

git show HEAD~1

Além disso, basta substituir '1' acima com o número de sequência de confirmação necessário.

shubham mishra
fonte
15

Depois de fazer várias confirmações ou clonar / puxar um repositório, convém ver quais confirmações foram feitas. Basta verificar essas soluções simples para ver seu histórico de consolidação (do último / recente ao primeiro).

Para o último commit, apenas fogo este comando: git log -1. Para coisas mais interessantes, veja abaixo -

  1. Para ver o ID de confirmação (soma de verificação SHA-1), Nome do autor <ID do email>, Data junto com a hora e mensagem de confirmação -

    git log
    
  2. Para ver mais algumas estatísticas, como os nomes de todos os arquivos alterados durante esse commit e o número de inserções / exclusões. Isso é muito útil ao revisar o código -

    git log --stat
    
  3. Para ver os históricos de confirmação em alguns formatos bonitos :) (Isso é seguido por algumas opções de pré-construção) -

    • Se você tiver muitos commits para revisar, este comando os mostrará em uma única linha elegante:

      git log --pretty=oneline
      
    • Para ver detalhes curtos, médios, completos ou até mais detalhes do seu commit, use o seguinte, respectivamente -

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. Você pode até usar seu próprio formato de saída usando a formatopção -

    git log --pretty=format:"%an, %ae - %s"
    

    onde% an - nome do autor,% ae - email do autor,% s - assunto do commit, etc.

Isso pode ajudá-lo com seus históricos de confirmação. Para mais informações, clique aqui .

Mithilesh Tipkari
fonte
11
$ git diff - somente o nome HEAD ^ .. HEAD

ou

$ git log - somente o nome HEAD ^ .. HEAD
Greg Bacon
fonte
É disso que eu preciso. Que tal algo dizendo se foi modificado, adicionado ou excluído? Talvez com uma letra, no estilo svn?
Dan Rosenstark
11
Tenho agora. git log --name-status HEAD^..HEAD
Dan Rosenstark
2
Em vez de git log ... HEAD^..HEAD, não é mais simples de usar git log ... -1 HEAD, ou melhor git show ... HEAD?
Jakub Narębski
Depois de navegar por algumas postagens do Stackoverflow, esta é a resposta que preciso. Eu só queria os arquivos e nada mais. Nenhum resumo de confirmação, apenas os arquivos da confirmação mais recente. OBRIGADO!
luckytaxi
6

git diff --stat HEAD

Isso mostra o mesmo diffstat que seu último commit.

Andy Magoon
fonte
4

Outra maneira de listar apenas os arquivos é usar:
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
Ou você pode usar dois IDs de confirmação

Ismail Cherri
fonte
vantagens disso para log?
Dan Rosenstark 14/09
É basicamente uma maneira diferente de listar os arquivos. Eu costumo combinar isso com rsync para implantação
Ismail Cherri
0

Se você está pensando em encontrar o maior e mais recente commit após executar um check-out git de um commit anterior ( e esqueceu de escrever o hash do HEAD antes de executar o checkout ), a maioria dos itens acima não o levará de volta para onde você começou. git log - [some #] mostra apenas o log da posição ATUAL do HEAD , que não é necessariamente o último commit (estado do projeto). O checkout desconectará o HEAD e apontará para o que você fez check-out.

Você pode visualizar o reflog git inteiro , até chegar à entrada que faz referência ao clone original. BTW, isso também não funcionará se forem feitas confirmações entre o momento em que você clonou o projeto e quando você efetuou um checkout. Caso contrário, você pode esperar que todas as suas confirmações na máquina local estejam no servidor e depois clonar novamente o projeto inteiro.

Espero que isto ajude.

HadziJo
fonte
Obrigado, é um bom argumento, mas a pergunta original era muito mais simples e já respondia bem muitas vezes.
Dan Rosenstark 17/02/19