質問
Gitで個々のファイルの変更履歴を表示するにはどうすればよいですか?
私は次のことを知っています:
git log -- [filename]
ファイルのコミット履歴が表示されますが、各ファイル変更の内容を取得するにはどうすればよいですか
私はMS SourceSafeから移行しようとしていますが、以前は単純なright-click
=> <!>#8594でした。 show history
。
解決
このために使用します:
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
オプションなし)は、名前が変更された時点までのファイルの履歴のみを表示します- git log --follow -p bar
として知られているファイルの履歴を表示しません。 -p
を使用すると、ファイルが<=>であったときの変更を含め、ファイルの履歴全体が表示されます。 <=>オプションは、変更ごとに差分が含まれるようにします。
テキストベースのままにする場合は、 tig を使用できます。 strong>。
クイックインストール:
- apt-get :
# apt-get install tig
- Homebrew(OS X):
$ brew install tig
これを使用して、単一ファイルの履歴を表示します:tig [filename]
または、詳細なレポ履歴を参照します:tig
gitk
に似ていますが、テキストベースです。ターミナルで色をサポート!
git whatchanged -p filename
も同等ですこの場合、 git log -p filename
へ。
git blame filename
。これにより、ファイルのすべての行について、短いコミットID、作成者、タイムスタンプ、および完全なコード行が出力されます。
これは、バグを発見し、それがいつ導入されたのか(または誰のせいなのか)を知りたい場合に非常に便利です。
SourceTreeユーザー
SourceTreeを使用してリポジトリを視覚化する場合(無料で非常に優れています)、ファイルを右クリックして[選択したログを記録
]を選択できます。
表示(下)は、gitkおよびリストされている他のほとんどのオプションよりもはるかに使いやすいです。残念ながら(現時点では)コマンドライン<!>#8212からこのビューを起動する簡単な方法はありません。 SourceTreeのCLIは現在リポジトリを開くだけです。
ファイルの各行を最後に変更したリビジョンと作成者を表示するには:
git blame filename
または強力な非難GUIを使用する場合:
git gui blame filename
他の回答を読んで少し遊んだ後の要約:
通常のコマンドラインコマンドは
です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'
サブディレクトリgdf dir
内のすべてのフォーカスされた履歴を取得するためにdir
と入力するだけです。
このエイリアスを.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の出力とほぼ同じに見えます。お楽しみください。
最近tig
を発見し、非常に有用であることがわかりました。 AまたはBを実行したい場合がありますが、ほとんどの場合、それはかなりきれいです。
あなたの場合、tig <filename>
が探しているものかもしれません。
この正確な目的のために git-playback を作成しました
pip install git-playback
git playback [filename]
これには、コマンドラインに結果を表示する(git log -p
など)と同時に、矢印キー(gitk
など)を使用して各コミットをステップスルーできるという利点があります。
ファイルの履歴全体を表示する場合は、他のすべてのブランチの含むを使用します:
gitk --all <filename>
優れた Git拡張機能を使用すると、ファイルの履歴のある時点に移動できます。まだ存在している場合(削除されている場合はHEADに移動します)、File tree
タブに切り替え、ファイルを右クリックしてFile history
を選択します。
デフォルトでは、ファイルの名前を変更し、Blame
タブで特定のリビジョンの名前を確認できます。
削除リビジョンをクリックしたときにfatal: Not a valid object name
タブにView
を表示するなど、いくつかの小さな落とし穴がありますが、私はそれに耐えることができます。 :-)
Repositoryメニューでgit GUI(Windows)を使用している場合、<!> quot; Visualize master's History <!> quot;を使用できます。上のペインでコミットを、右下でファイルをハイライトすると、左下にそのコミットの差分が表示されます。
SmartGit :
- メニューで変更されていないファイルの表示を有効にします:変更されていないファイルの表示/表示
- ファイルを右クリックして「ログ」を選択するか、「Ctrl-L」を押します
ファイルの特定の部分を変更したコミットの一覧を表示することもできます(Git 1.8.4で実装されています)。
返される結果は、この特定の部分を変更したコミットのリストです。コマンド:
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
upperLimitはstart_line_numberで、lowerLimitはファイルのending_line_numberです。
このスレッドではなく、私が探していた答えは、コミットのためにステージングしたファイルの変更を確認することです。すなわち
git diff --cached
TortoiseGitを使用する場合は、ファイルを右クリックしてTortoiseGit --> Show Log
を実行できるはずです。表示されるウィンドウで、次のことを確認します。
-
'
Show Whole Project
'オプションはチェックされません。 -
'
All Branches
'オプションがチェックされています。
git diff -U <filename>
統合された差分を提供します。
赤と緑に色付けする必要があります。そうでない場合は、最初にgit config color.ui auto
を実行します。
gitプラグインでEclipseを使用している場合、履歴との優れた比較ビューがあります。ファイルを右クリックして、<!> quot; compare with <!> quot; = <!> gt;を選択します。 <!> quot; history <!> quot;
vscodeは GitLens で使用できます。これは非常に強力なツールです。
GitLensをインストールしたら、GitLensタブに移動し、FILE HISTORY
を選択して参照できます。