Git で個々のファイルの変更履歴を表示するにはどうすればよいですか?
私は限りました:
git log -- [filename]
ファイルのコミット履歴が表示されますが、各ファイルの変更の内容を取得するにはどうすればよいですか?
私は Microsoft Visual SourceSafeから移行しようとしていますが、以前は単純な右クリック → Show historyでした。
Git で個々のファイルの変更履歴を表示するにはどうすればよいですか?
私は限りました:
git log -- [filename]
ファイルのコミット履歴が表示されますが、各ファイルの変更の内容を取得するにはどうすればよいですか?
私は Microsoft Visual SourceSafeから移行しようとしていますが、以前は単純な右クリック → Show historyでした。
グラフィカル ビューの場合は、次を使用しますgitk
。
gitk [filename]
または、名前変更後のファイル名を追跡するには:
gitk --follow [filename]
使用できます
git log -p -- filename
Git が各ログ エントリのパッチを生成できるようにします。
見る
git help log
より多くのオプションについて-実際には多くの素晴らしいことを行うことができます:)特定のコミットの差分だけを取得するには、次のことができます
git show HEAD
または識別子によるその他のリビジョン。または使用
gitk
変更を視覚的にブラウズします。
git log --follow -p -- path-to-file
これにより、ファイルの全履歴が表示されます (名前変更を超えた履歴と、各変更の差分を含む)。
つまり、 という名前のファイルbar
がかつて という名前だった場合foo
、git log -p bar
(--follow
オプションを指定しないと) は、名前が変更された時点までのファイルの履歴のみを表示します。ファイルが として知られていたときのファイルの履歴は表示されませんfoo
。を使用git log --follow -p bar
すると、ファイルがfoo
. この-p
オプションにより、変更ごとに差分が含まれるようになります。
git whatchanged -p filename
git log -p filename
この場合も同等です。
また、ファイル内の特定のコード行が。で変更された時期も確認できますgit blame filename
。これにより、ファイル内のすべての行について、短いコミットID、作成者、タイムスタンプ、およびコードの完全な行が出力されます。これは、バグを見つけて、それがいつ発生したか(または誰が原因であるか)を知りたい場合に非常に役立ちます。
Sourcetree を使用してリポジトリを視覚化する場合 (無料で非常に優れています)、ファイルを右クリックして [選択したログ]を選択できます。
表示 (以下) は、gitkやリストされている他のほとんどのオプションよりもはるかに使いやすいです。残念ながら (現時点では)、コマンド ラインからこのビューを起動する簡単な方法はありません。現在、Sourcetree の CLI はリポジトリを開くだけです。
ファイルの各行を最後に変更したリビジョンと作成者を表示するには:
git blame filename
または、強力な Blame GUI を使用する場合:
git gui blame filename
それらを読んで少し遊んだ後の他の答えの要約:
通常のコマンドラインコマンドは次のようになります
git log --follow --all -p dir/file.c
ただし、gitk(GUI)またはtig(テキストUI)のいずれかを使用して、人間が読める形式で表示することもできます。
gitk --follow --all -p dir/file.c
tig --follow --all -p dir/file.c
Debian / Ubuntuでは、これらの素敵なツールのインストールコマンドは期待どおりです。
sudo apt-get install gitk tig
そして私は現在使用しています:
alias gdf='gitk --follow --all -p'
入力するだけgdf dir
で、サブディレクトリ内のすべてのフォーカスされた履歴を取得できdir
ます。
ファイルの特定の部分を変更したコミットを一覧表示するこれを試すこともできます (Git 1.8.4 で実装)。
返される結果は、この特定の部分を変更したコミットのリストです。指示:
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
ここで、upperLimit はファイルの開始行番号で、lowerLimit はファイルの終了行番号です。
詳細はhttps://web.archive.org/web/20210120153550/http://techpurohit.com/list-some-useful-git-commandsにあります。
この正確な目的のためにgit-playbackを書きました
pip install git-playback
git playback [filename]
これには、コマンド ラインに結果を表示する ( などgit log -p
) と同時に、矢印キーを使用して各コミットをステップ実行できる( など) という利点がありますgitk
。
他のすべてのブランチを含む、ファイルの全履歴を表示したい場合は、次を使用します。
gitk --all <filename>
Git GUIを使用している場合(Windows):
リポジトリメニューの下で、「マスターの履歴を視覚化する」を使用できます。上部ペインでコミットを強調表示し、右下でファイルを強調表示すると、そのコミットの差分が左下に表示されます。
優れたGit 拡張機能を使用すると、ファイルがまだ存在する履歴のポイントに移動し (削除されている場合は HEAD に移動します)、File tree
タブに切り替え、ファイルを右クリックして を選択しますFile history
。
デフォルトでは、名前変更を通じてファイルをたどり、Blame
タブで特定のリビジョンの名前を確認できます。
削除されたリビジョンをクリックしたときにタブに表示fatal: Not a valid object name
されるなど、いくつかの小さな落とし穴がありますが、私はそれを受け入れることができます. View
:-)
私が探していた答えはここにはありませんでした。コミットのためにステージングしたファイルの変更を確認することでした。すなわち、
git diff --cached
git diff -U <filename>
統一された差分を提供します。
赤と緑で着色する必要があります。そうでない場合は、git config color.ui auto
最初に次を実行します。
Git プラグインでEclipseを使用している場合、履歴との優れた比較ビューがあります。ファイルを右クリックし、「比較」→「履歴」を選択します。