特定のファイルを変更したすべてのコミットをリストする方法はありますか?
--follow
は特定のファイルに対して機能します。
git log --follow -- filename
与えられた他の解決策との違い
他のソリューションにはgit log path
(--follow
なし)が含まれることに注意してください。あなたが追跡したい場合は、そのアプローチは便利です。 ディレクトリ に変更がありますが、ファイルの名前が変更されたときにつまずいてしまいます(したがって、--follow filename
を使用してください)。
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.
特定のファイルに対するコミットを取得するには、以下のコマンドを使用してください。
git log -p filename
私はこれを注意深く見てきました、そしてこれらすべての答えは本当に私にすべてのブランチにわたるすべてのコミットを示しているようには思えません。
これが私がgitkの編集ビューオプションをいじって考えたものです。これは私に ファイルに対する全てのコミットを示します branch、local、reflog、remoteに関係なく。
gitk --all --first-parent --remotes --reflog --author-date-order -- filename
それはgit log <somepath>
と同じくらい単純であるべきです。マンページ(git-log(1)
)を確認してください。
個人的にはgit log --stat <path>
を使うのが好きなので、各コミットがファイルに与える影響を見ることができます。
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
が単一のファイルに対してのみ機能することです。
あるいは(Git 1.8.4以降)、ファイルの特定の part を変更したすべてのコミットを取得することも可能です。開始行と終了行の番号を渡すことによってこれを取得できます。
返される結果は、この特定の部分を変更したコミットのリストです。コマンドは次のようになります。
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
以前のコミットで - 削除されたファイルをフォローしようとしている場合
git log --follow -- filename
ファイルを変更したすべてのコミットをすべてのブランチで表示したい場合は、次のようにします。
git log --follow --all <filepath>
filename
とではないfilepath
によるコミットをすべて探したい場合は、次のようにします。
git log --all -- '*.wmv'
すべてのブランチでgit log --all <filename>
に影響を与えるコミットを表示するには<filename>
を使います。
特定のファイルを変更したコミットで行われたすべての変更を(ファイル自体への変更だけではなく)見たい場合は、--full-diff
を渡すことができます。
git log -p --full-diff [branch] -- <path>
gitk <path_to_filename>
パッケージ "gitk"が既にインストールされていると仮定します。
インストールされていない場合は、次の操作を行います。
Sudo apt-get install gitk
そして上記のコマンドを試してください。それはLinux用です...彼らがGUIを望むなら、それはLinuxユーザを助けるかもしれません。
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>