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.


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.


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.


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


44

Para ver o último commit

git log -1

Para ver os 2 últimos commit

git log -2

etc ....


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 <Kylo@darkside.empire.gov>
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       

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.


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.


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 .


11
$ git diff - somente o nome HEAD ^ .. HEAD

ou

$ git log - somente o nome HEAD ^ .. HEAD

É 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.


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


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.


Obrigado, é um bom argumento, mas a pergunta original era muito mais simples e já respondia bem muitas vezes.
Dan Rosenstark 17/02/19
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.