3503

Git で個々のファイルの変更履歴を表示するにはどうすればよいですか?

私は限りました:

git log -- [filename]

ファイルのコミット履歴が表示されますが、各ファイルの変更の内容を取得するにはどうすればよいですか?

私は Microsoft Visual SourceSafeから移行しようとしていますが、以前は単純な右クリック → Show historyでした。

4

24 に答える 24

2618

グラフィカル ビューの場合は、次を使用しますgitk

gitk [filename]

または、名前変更後のファイル名を追跡するには:

gitk --follow [filename]
于 2009-08-24T12:05:51.537 に答える
2590

使用できます

git log -p -- filename

Git が各ログ エントリのパッチを生成できるようにします。

見る

git help log

より多くのオプションについて-実際には多くの素晴らしいことを行うことができます:)特定のコミットの差分だけを取得するには、次のことができます

git show HEAD

または識別子によるその他のリビジョン。または使用

gitk

変更を視覚的にブラウズします。

于 2008-11-10T15:56:44.393 に答える
1689

git log --follow -p -- path-to-file

これにより、ファイルの履歴が表示されます (名前変更を超えた履歴と、各変更の差分を含む)。

つまり、 という名前のファイルbarがかつて という名前だった場合foogit log -p bar(--followオプションを指定しないと) は、名前が変更された時点までのファイルの履歴のみを表示します。ファイルが として知られていたときのファイルの履歴は表示されませんfoo。を使用git log --follow -p barすると、ファイルがfoo. この-pオプションにより、変更ごとに差分が含まれるようになります。

于 2011-03-30T23:25:11.130 に答える
190

テキストベースのままにしたい場合は、tigを使用することをお勧めします。

クイックインストール:

  • APT :# apt-get install tig
  • 自作(OS X) :$ brew install tig

これを使用して、単一のファイルの履歴を表示します。tig [filename]

または、詳細なリポジトリ履歴を参照します。tig

gitkに似ていますが、テキストベースです。端末の色に対応!

于 2012-06-07T10:23:33.150 に答える
124

git whatchanged -p filenamegit log -p filenameこの場合も同等です。

また、ファイル内の特定のコード行が。で変更された時期も確認できますgit blame filename。これにより、ファイル内のすべての行について、短いコミットID、作成者、タイムスタンプ、およびコードの完全な行が出力されます。これは、バグを見つけて、それがいつ発生したか(または誰が原因であるか)を知りたい場合に非常に役立ちます。

于 2008-11-11T06:12:16.553 に答える
116

Sourcetree ユーザー

Sourcetree を使用してリポジトリを視覚化する場合 (無料で非常に優れています)、ファイルを右クリックして [選択したログ]を選択できます。

ここに画像の説明を入力してください

表示 (以下) は、gitkやリストされている他のほとんどのオプションよりもはるかに使いやすいです。残念ながら (現時点では)、コマンド ラインからこのビューを起動する簡単な方法はありません。現在、Sourcetree の CLI はリポジトリを開くだけです。

ここに画像の説明を入力してください

于 2013-07-30T18:55:48.307 に答える
72

ファイルの各行を最後に変更したリビジョンと作成者を表示するには:

git blame filename

または、強力な Blame GUI を使用する場合:

git gui blame filename
于 2010-08-11T13:01:24.953 に答える
60

それらを読んで少し遊んだ後の他の答えの要約:

通常のコマンドラインコマンドは次のようになります

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ます。

于 2012-12-05T18:38:20.240 に答える
16

ファイルの特定の部分を変更したコミットを一覧表示するこれを試すこともできます (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にあります。

于 2015-08-13T05:41:19.673 に答える
15

この正確な目的のためにgit-playbackを書きました

pip install git-playback
git playback [filename]

これには、コマンド ラインに結果を表示する ( などgit log -p) と同時に、矢印キーを使用して各コミットをステップ実行できる( など) という利点がありますgitk

于 2012-11-19T06:25:32.557 に答える
14

または:

gitx -- <path/to/filename>

gitxを使用している場合

于 2010-09-17T16:50:30.143 に答える
9

他のすべてのブランチを含む、ファイルの全履歴を表示したい場合は、次を使用します。

gitk --all <filename>
于 2012-08-07T13:57:47.363 に答える
8

Git GUIを使用している場合(Windows):

リポジトリメニューの下で、「マスターの履歴を視覚化する」を使用できます。上部ペインでコミットを強調表示し、右下でファイルを強調表示すると、そのコミットの差分が左下に表示されます。

于 2008-11-10T15:56:29.307 に答える
7

優れたGit 拡張機能を使用すると、ファイルがまだ存在する履歴のポイントに移動し (削除されている場合は HEAD に移動します)、File treeタブに切り替え、ファイルを右クリックして を選択しますFile history

デフォルトでは、名前変更を通じてファイルをたどり、Blameタブで特定のリビジョンの名前を確認できます。

削除されたリビジョンをクリックしたときにタブに表示fatal: Not a valid object nameされるなど、いくつかの小さな落とし穴がありますが、私はそれを受け入れることができます. View:-)

于 2012-11-28T15:58:50.320 に答える
6

スマートギット:

  1. メニューで変更されていないファイルを表示できるようにします: 表示 / 変更されていないファイルを表示
  2. ファイルを右クリックして「ログ」を選択するか、「Ctrl-L」を押します
于 2016-06-01T10:44:13.030 に答える
5

私が探していた答えはここにはありませんでした。コミットのためにステージングしたファイルの変更を確認することでした。すなわち、

git diff --cached
于 2011-12-01T05:24:23.167 に答える
4

git diff -U <filename>統一された差分を提供します。

赤と緑で着色する必要があります。そうでない場合は、git config color.ui auto最初に次を実行します。

于 2013-05-20T17:17:01.760 に答える
2

Git プラグインでEclipseを使用している場合、履歴との優れた比較ビューがあります。ファイルを右クリックし、「比較」→「履歴」を選択します。

于 2013-01-02T19:35:17.630 に答える