web-dev-qa-db-ja.com

Gitバージョン管理を使用してファイルの変更履歴を表示する

Gitで個々のファイルの変更履歴、変更点の詳細を確認するにはどうすればよいですか?

私は限ります:

git log -- [filename]

これはファイルのコミット履歴を示していますが、どのようにして各ファイルの変更内容を確認することができますか?

私はMS SourceSafeから移行しようとしていますが、それは以前は単純なright-clickshow historyでした。

2770
Richard

このために私は使用します:

gitk [filename]

または過去のファイル名の変更を追跡する

gitk --follow [filename]
2164

あなたが使用することができます

git log -p filename

gitに各ログエントリのパッチを生成させるため。

見る

git help log

より多くのオプションのために - それは実際にたくさんのいいことをすることができます:)特定のコミットのための差分だけを得るためにあなたはできる

git show HEAD 

または識別子によるその他の改訂。または使用

gitk

変更を視覚的に閲覧するため。

2018
VolkA

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

これはファイルの 全体 の履歴を表示します(名前の変更を超えた履歴と各変更の差分を含む)。

言い換えれば、barという名前のファイルがかつてfooという名前だった場合、git log -p bar--followオプションなし)は、ファイルの名前が変更された時点までの履歴のみを表示します。 fooとして。 git log --follow -p barを使用すると、ファイルがfooとして知られていたときのファイルへのすべての変更を含む、ファイルの全履歴を表示します。 -pオプションを使用すると、変更ごとに差分が確実に含まれます。

1346
Dan Moulding

テキストベースのままにしたい場合は、tigを使用します。

クイックインストール

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

単一ファイルの履歴を表示するために使用します。tig [filename]
または、詳細なレポ履歴を閲覧する:tig

gitkと似ていますが、テキストベースです。端末で色をサポート!

156
Falken

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

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

109
farktronix

SourceTreeユーザー

SourceTreeを使ってあなたのリポジトリを視覚化するなら(それは無料でとても良いです)、ファイルを右クリックして Log Selected を選択できます。

enter image description here

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

enter image description here

96
Mark Fox

ファイルの各行を最後に変更したリビジョンと作成者を表示するには、次の手順を実行します。

git blame filename

あるいは、あなたが強力な責めのGUIを使いたいならば:

git gui blame filename
61
yllohy

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

通常のコマンドラインコマンドは

git log --follow --all -p dir/file.c

しかし、gitk(gui)またはtig(text-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'

そのため、サブディレクトリdir内のすべての履歴を集中的に取得するには、gdf dirと入力するだけです。

45

このエイリアスを.gitconfigに追加してください。

[alias]
    lg = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative

そして、このようなコマンドを使います。

> git lg
> git lg -- filename

出力はgitkの出力とほぼ同じになります。楽しい。

23
Palesz

最近私はtigを発見し、それが非常に役に立つことがわかりました。私はそれがAまたはBをしたいのですがいくつかのケースがありますが、ほとんどの場合それはかなりきれいです。

あなたの場合は、tig <filename>があなたが探しているものかもしれません。

http://jonas.nitro.dk/tig/

20
lang2

私は git-playback と書きました。

pip install git-playback
git playback [filename]

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

15
Jian

または

gitx -- <path/to/filename>

gitx を使用している場合

13
George Anderson

ファイルの全履歴を見たい場合は、を含む on その他すべてのブランチで次のようにします。

gitk --all <filename>
9
Adi Shavit

リポジトリメニューのgit GUI(Windows)を使用している場合は、「視覚化マスタの履歴」を使用できます。上部ペインのコミットと右下のファイルをハイライトすると、左下にそのコミットの差分が表示されます。

7
cori

優れた Git Extensions を使えば、ファイルがまだ存在していた履歴のある場所(削除されている場合はHEADに移動します)に行き、File treeタブに切り替え、ファイルを右クリックしてFile historyを選択してください。

デフォルトでは、ファイル名の変更が行われ、Blameタブで特定のリビジョンの名前を確認できます。

削除リビジョンをクリックしたときにViewタブにfatal: Not a valid object nameを表示するなど、ちょっとした問題がいくつかありますが、それでも問題ありません。 :-)

7
PhiLho

SmartGit

  1. メニューで、変更されていないファイルを表示できるようにします。変更されていないファイルの表示/表示
  2. ファイルを右クリックして[ログ]を選択するか、[Ctrl] - [L]を押します。
5

ファイルの特定の部分を変更したコミットを一覧表示することもできます(Git 1.8.4で実装)。

返される結果は、この特定の部分を変更したコミットのリストです。コマンド:

git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>

ここで、upperLimitはファイルのstart_line_number、lowerLimitはファイルのending_line_numberです。

詳細は https://www.techpurohit.com/list-some-useful-git-commands にあります。

5
jitendrapurohit

私が探していたのは、このスレッドではなかったのですが、コミットしようとしていたファイルの変更を確認することです。すなわち.

git diff --cached
4
Malks

TortoiseGitを使用している場合は、ファイルを右クリックしてTortoiseGit --> Show Logを実行できるはずです。ポップアップウィンドウで、次のことを確認してください。

  • 'Show Whole Project'オプションはチェックされていません。

  • 'All Branches'オプションがチェックされています。

4
user3885927

git diff -U <filename>はあなたに統一された差分を与えます。

それは赤と緑に着色されるべきです。そうでない場合は、最初にgit config color.ui autoを実行してください。

3

あなたがgitプラグインと一緒にEclipseを使っているなら、それは歴史との優れた比較ビューを持ちます。ファイルを右クリックして[比較対象] => [履歴]を選択します。

2
AhHatem

GitLens と一緒にvscodeを使用することができます。これは非常に強力なツールです。 GitLensをインストールした後、GitLensタブに行き、FILE HISTORYを選択すればそれを閲覧することができます。

enter image description here

0
foxiris