Git:私の最後のコミットを見てください


390

前回のコミットでコミットされたファイルを、リストを確認したときとまったく同じように表示したいだけですgit commit。残念ながら検索

git "last commit" log

グーグルで私はどこにも行きません。そして

git diff HEAD^..HEAD

もちろんそれは私が必要とするものではありません。それは変化の根性をも噴出するからです。


35
ありがとう、私は実際に必要なだけでしたgit diff HEAD^..HEAD
Ameen 2014

回答:


376

コメントで判断したように、OPが探しているようです

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

これは、subversionからgitにアクセスする多くの人がよく知っているsvn statusor からの出力にも非常に近いものですsvn log -v

--name-statusここでの鍵です。この質問の他の人々によって示されるように、あなたが使用することができgit log -1git showおよびgit diff出力の同じ種類を取得します。個人的には、git show <rev>個々のリビジョンを見るときに使います。


コメントは私の質問をより明確にするための最善の方法ではありません:) MikeSepに感謝
Dan Rosenstark

4
これは最後のコミットを与えると思います、いいえ?だから、私の最後のために私はやるだろうgit log --stat --author nroose -n 1
-19:

1
そして、略しとgitのショー--name-ステータス--onelineを短縮することができます
jasonleonhard

それは明らかです!これは常に発生するクエリの一種であるため、これは非常に単純なものだと思いました。
スコットビッグス

1
強制プッシュを使用する場合、このコマンドは最新の(時間ごとの)コミットではなく最後のパッチを表示します...一部のユースケースではトリッキーかもしれません
Olix

208

git showを使用します

git show --summary

作成または削除されたファイルの名前は表示されますが、変更されたファイルの名前は表示されません。このgit showコマンドは、コミットに関するさまざまなタイプの情報を示すさまざまな出力形式をサポートしています。


1
@jamessan git show --statは近いですが、ファイルの横に「変更」または「追加」という単語が表示されるビューはありませんか?
Dan Rosenstark、

3
あなたがファイル(さえ未満の名前だけが必要な場合--stat)、あなたも見てみたいこと--name-status--name-onlyスイッチ。
Mike Seplowitz

1
@MikeSep、それが実際に必要だった。あなたがそれを答えにしたら、私にはそれがそうだったので、私はそれを最良の答えにマークします。私が使用していますgit log --name-status HEAD^..HEAD
Dan Rosenstark、

これは、提供されているソリューションの中で最も単純なソリューションです。
マシュー


44

最後のコミットを確認するには

git log -1

最後の2つのコミットを確認するには

git log -2

等....


1
しかし、質問は「... 最後のコミットでコミットされたファイルを確認したい」と述べました
Peter Mortensen

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 2013年

5
そこに問題があります。帝国は防御グリッドにphpを使用しています!
ptim 2016年

3
私がスタックオーバーフローで見た最高の例!「それらはあなたが探しているコミットではありません。」
Scott Biggs


21

最後のコミットの変更を確認するには

git show HEAD

または、最後の2番目のコミットの変更を確認する

git show HEAD~1

さらに、上記の「1」を必要なコミットシーケンス番号に置き換えるだけです。


15

複数のコミットを実行した後、またはリポジトリのクローン/プルを行った後、どのようなコミットが行われたかを確認したい場合があります。これらの簡単な解決策をチェックして、コミット履歴を確認してください(最後/最近のコミットから最初のコミットまで)。

最後のコミットでは、次のコマンドを実行するだけですgit log -1。より興味深いものについては、以下を参照してください-

  1. コミットID(SHA-1チェックサム)、作成者名<メールID>、日付と時刻、およびコミットメッセージを表示するには-

    git log
    
  2. そのコミット中に変更されたすべてのファイルの名前や挿入/削除の数など、さらにいくつかの統計を表示します。これは、コードを確認するときに非常に役立ちます-

    git log --stat
    
  3. いくつかのきれいな形式でコミット履歴を表示するには:)(これにはいくつかの事前構築オプションが続きます)-

    • 確認するコミットが多すぎる場合、このコマンドはそれらをきちんとした1行で表示します。

      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 --name-only HEAD ^ .. HEAD

または

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

それは私がかなり必要とするものです。それが変更されたか、追加されたか、削除されたかについて何か言うことはどうですか?たぶん、svn風の手紙?
Dan Rosenstark、2010

1
了解しました。git log --name-status HEAD^..HEAD
Dan Rosenstark、2010

2
代わりにgit log ... HEAD^..HEAD、使用するgit log ... -1 HEAD方が簡単ではないgit show ... HEADですか?
JakubNarębski、2010

いくつかのStackoverflow投稿を閲覧した後、これが私が必要とする答えです。ファイルだけが欲しかった。コミットの概要はありません。最新のコミットのファイルのみです。ありがとう!
ラッキータクシー2016


4

ファイルのみをリストするもう1つの方法は、次の方法を使用
git diff-tree --no-commit-id --name-only -r HEAD^..HEAD
することです。または、2つのコミットIDを使用できます


これの利点はlog
Dan Rosenstark、2018

これは基本的に、ファイルを一覧表示する別の方法です。私は通常、これを展開のためにrsyncと組み合わせます
Ismail Cherri

0

以前のコミットのgitチェックアウトを実行した後そしてチェックアウトを実行する前にHEADのハッシュを書き留めておかなかった場合)、最新かつ最大のコミットを見つけることについて話している場合、上記のほとんどはあなたを元に戻すことはできませんあなたが始めました。git log-[some#] はHEADの現在の位置からのログのみを表示します。これは必ずしも最後のコミット(プロジェクトの状態)であるとは限りません。チェックアウトはヘッドを切断し、チェックアウトしたものを指し示します。

元のクローンを参照するエントリに到達するまで、git reflog全体を表示できます。ところで、プロジェクトのクローンを作成してからチェックアウトを実行するまでの間にコミットが行われた場合、これも機能しません。それ以外の場合は、ローカルマシン上のすべてのコミットがサーバー上にあることを期待してから、プロジェクト全体のクローンを再作成できます。

お役に立てれば。


おかげで、それは良い点ですが、元の質問ははるかに単純で、すでに何度もよく答えられています。
Dan Rosenstark
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.