web-dev-qa-db-ja.com

特定のファイルを変更したすべてのコミットを一覧表示する方法

特定のファイルを変更したすべてのコミットをリストする方法はありますか?

672
Daniel

--followは特定のファイルに対して機能します。

git log --follow -- filename

与えられた他の解決策との違い

他のソリューションにはgit log path--followなし)が含まれることに注意してください。あなたが追跡したい場合は、そのアプローチは便利です。 ディレクトリ に変更がありますが、ファイルの名前が変更されたときにつまずいてしまいます(したがって、--follow filenameを使用してください)。

920
jackrabb1t

git log pathはあなたが望むことをするべきです。 git logから -

[--] <path>…

Show only commits that affect any of the specified paths. To prevent confusion with 
options and branch names, paths may need to be prefixed with "-- " to separate them
from options or refnames.
119
Gabe Moothart

特定のファイルに対するコミットを取得するには、以下のコマンドを使用してください。

git log -p filename
39
Sankar Subburaj

私はこれを注意深く見てきました、そしてこれらすべての答えは本当に私にすべてのブランチにわたるすべてのコミットを示しているようには思えません。

これが私がgitkの編集ビューオプションをいじって考えたものです。これは私に ファイルに対する全てのコミットを示します branch、local、reflog、remoteに関係なく。

gitk --all --first-parent --remotes --reflog --author-date-order -- filename
39
BigMiner

それはgit log <somepath>と同じくらい単純であるべきです。マンページ(git-log(1))を確認してください。

個人的にはgit log --stat <path>を使うのが好きなので、各コミットがファイルに与える影響を見ることができます。

35
rfunduk

Jackrabb1tが指摘したように、--followは名前の変更や移動を超えて履歴をリストし続けるのでより堅牢です。そのため、現在同じパスにないファイル、またはさまざまなコミットを通じて名前が変更されたファイルを探している場合は、--followがそれを追跡します。

名前/パスの変更を視覚化したい場合は、これがより良い方法です。

git log --follow --name-status -- <path>

しかし、あなたがもっと重要なものだけを含むもっとコンパクトなリストが欲しいならば:

git log --follow --name-status --format='%H' -- <path>

あるいは

git log --follow --name-only --format='%H' -- <path>

欠点は、--followが単一のファイルに対してのみ機能することです。

14
Roberto

あるいは(Git 1.8.4以降)、ファイルの特定の part を変更したすべてのコミットを取得することも可能です。開始行と終了行の番号を渡すことによってこれを取得できます。

返される結果は、この特定の部分を変更したコミットのリストです。コマンドは次のようになります。

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

ここで、upperLimitstart_line_numberlowerLimitending_line_numberです。

詳細情報 - https://www.techpurohit.com/list-some-useful-git-commands

11
jitendrapurohit

以前のコミットで - 削除されたファイルをフォローしようとしている場合

git log --follow -- filename
10
snovelli

ファイルを変更したすべてのコミットをすべてのブランチで表示したい場合は、次のようにします。

git log --follow --all <filepath>
8
Always_Beginner

filenameではないfilepathによるコミットをすべて探したい場合は、次のようにします。

git log --all -- '*.wmv'
6
WonderLand

すべてのブランチでgit log --all <filename>に影響を与えるコミットを表示するには<filename>を使います。

5
Lebnik

特定のファイルを変更したコミットで行われたすべての変更を(ファイル自体への変更だけではなく)見たい場合は、--full-diffを渡すことができます。

git log -p --full-diff [branch] -- <path>
4
Cubic
gitk <path_to_filename>

パッケージ "gitk"が既にインストールされていると仮定します。

インストールされていない場合は、次の操作を行います。

Sudo apt-get install gitk

そして上記のコマンドを試してください。それはLinux用です...彼らがGUIを望むなら、それはLinuxユーザを助けるかもしれません。

3
Breen ho

Linuxではgitkを使うことができます。

「Sudo apt-get install git-gui gitk」を使ってインストールできます。 "gitk <ファイル名>"で特定のファイルのコミットを見るために使うことができます。

# Shows commit history with patch
git log -p -<no_of_commits> --follow <file_name>

# Shows brief details like "1 file changed, 6 insertions(+), 1 deletion(-)"
git log --stat --follow <file_name>

参照

1
AnshBikram