吉特:看我最后一次提交


388

我只想查看上一次提交时提交的文件,就像我看到列表时一样git commit。不幸地寻找

git "last commit" log

在谷歌让我无处可去。和

git diff HEAD^..HEAD

当然,这并不是我所需要的,因为它也能激发出变化的勇气。


34
谢谢,我实际上只是需要git diff HEAD^..HEAD
Ameen

Answers:


374

通过评论确定,似乎OP正在寻找

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

这也非常接近您从svn status或获得的输出svn log -v,许多从subversion到git的人都熟悉该输出。

--name-status这是关键 因为在这个问题其他人指出的那样,你可以使用git log -1git show以及git diff获得相同类型的输出。就个人而言,我倾向于git show <rev>在查看各个修订版时使用。


我承认,评论不是让我的问题更清晰的最佳方法:)感谢MikeSep
Dan Rosenstark 2010年

4
我认为这是最后一次提交,不是吗?所以,我最后一次想做的是git log --stat --author nroose -n 1
更新

1
可以缩写和缩短git show --name-status --oneline
jasonleonhard

太明显了!我应该猜它是如此简单,因为这是一直发生的查询。
Scott Biggs 2015年

1
在使用强制推送的情况下,此命令将向您显示最后一个补丁而不是最新的(按时间)提交...在某些情况下可能会有些棘手
Olix

207

使用git show

git show --summary

这将显示已创建或已删除文件的名称,但不会显示已更改文件的名称。该git show命令支持各种输出格式,这些输出格式显示有关提交的各种信息。


1
@jamessan git show --stat很近,但是在文件旁边没有显示“修改”或“添加”一词的视图吗?
Dan Rosenstark'2

3
如果只需要文件名(甚至少于--stat),则可能还需要查看--name-status--name-only切换。
Mike Seplowitz 2010年

1
@MikeSep,实际上就是我所需要的。如果您将其作为答案,我将其标记为最佳答案,因为对我而言是这样。我正在使用git log --name-status HEAD^..HEAD
Dan Rosenstark,2010年

到目前为止,这是所提供解决方案中最简单的解决方案。
马修



42

到目前为止,最简单的命令是:

git show --name-only

因为它列出了最后一次提交中的文件,但并没有给您全部内容

输出示例为:

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
考虑--name-status代替--name-only
Acumenus

5
那里有问题。.帝国使用php防御网格!
ptim

3
我在stackoverflow上看到的最好的例子!“这些不是您要查找的提交。”
Scott Biggs


21

查看上一次提交更改

git show HEAD

或者查看倒数第二次提交更改

git show HEAD~1

并进一步将上面的“ 1”替换为所需的提交序列号。


15

完成几次提交或克隆/拉存储库后,您可能想查看已进行了哪些提交。只需检查这些简单的解决方案即可查看您的提交历史记录(从最近一次/最近一次提交到第一个提交)。

对于最后一次提交,只需触发以下命令:git log -1。有关更多有趣的内容,请参见下文-

  1. 要查看提交ID(SHA-1校验和),作者名称<mail ID>,日期以及时间和提交消息-

    git log
    
  2. 要查看更多统计信息,例如在该提交期间更改的所有文件的名称以及插入/删除的次数。在查看代码时非常方便-

    git log --stat
    
  3. 要以一些漂亮的格式查看提交历史记录,请执行以下操作:)(之后是一些预构建选项)-

    • 如果您要审查的提交过多,此命令将以整齐的一行显示它们:

      git log --pretty=oneline
      
    • 要查看提交的简短,中等,完整甚至更多详细信息,请分别使用以下命令-

      git log --pretty=short
      git log --pretty=medium
      git log --pretty=full
      git log --pretty=fuller
      
  4. 您甚至可以通过以下format选项使用自己的输出格式-

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

    其中%an-作者姓名,%ae-作者电子邮件,%s-提交主题,等等。

这可以帮助您了解提交历史。有关更多信息,请单击此处


11
$ git diff-仅名称HEAD ^ .. HEAD

要么

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

那就是我非常需要的。说它是否已被修改,添加或删除怎么样?也许带有svn风格的字母?
Dan Rosenstark'2

1
现在明白了。git log --name-status HEAD^..HEAD
Dan Rosenstark'2

2
相反git log ... HEAD^..HEAD,它不是更简单使用git log ... -1 HEAD还是更好git show ... HEAD
JakubNarębski2010年

浏览了几个Stackoverflow帖子后,这就是我需要的答案。我只想要文件而已。没有提交摘要,只有最新提交的文件。谢谢!
luckytaxi



0

如果您正在谈论对某些较早的提交执行git checkout之后发现最新和最大的提交(并且忘记了在执行checkout之前记下HEAD的哈希值),那么上面的大多数内容将使您无法回到原来的位置你开始了。git log-[some#]仅显示HEADCURRENT位置的日志,这不一定是最后的提交(项目状态)。签出将断开HEAD并将其指向您签出的任何内容。

您可以查看整个git reflog,直到到达引用原始克隆的条目。顺便说一句,如果您在克隆项目到执行结帐之间进行了任何提交,那么这也不起作用。否则,您可以希望本地计算机上的所有提交都在服务器上,然后重新克隆整个项目。

希望这可以帮助。


谢谢,这是一个很好的观点,但是最初的问题要简单得多,并且已经回答了很多次。
丹·罗森斯塔克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.