155

変更されたファイル名はでのみ表示できますgit logか?

4

6 に答える 6

237

私が使う

git log --name-only 

また

git log --name-only --oneline

略して。

于 2013-01-09T02:40:28.247 に答える
78

私はあなたが--name-only旗を使うことができると思います。何かのようなもの:

git log 73167b96 --pretty="format:" --name-only

私は個人的git showにコミットで変更されたファイルを表示するために使用します:

git show --pretty="format:" --name-only 73167b96

(73167b96は任意のコミット/タグ名にすることができます)

于 2013-01-08T21:14:20.193 に答える
40

私はここで「gitlog」の制限のない同様の答えを探していました。ここでの答えは私が必要なものを私に与えませんでしたが、これは私がそれを他の人がそれが役に立つと思う場合に備えてそれを追加します:

git diff --name-only

これを標準のコミットポインタと組み合わせて、特定のコミット以降に何が変更されたかを確認することもできます。

git diff --name-only HEAD~3
git diff --name-only develop
git diff --name-only 5890e37..ebbf4c0

これは、スクリプトに最適なファイル名のみを簡潔に提供します。例えば:

git diff --name-only develop | while read changed_file; do echo "This changed from the develop version: $changed_file"; done

#OR

git diff --name-only develop | xargs tar cvf changes.tar
于 2014-09-08T23:45:29.370 に答える
34

これにより、ほぼ必要なものが得られます。

git log --stat --oneline

コミットIDと短い1行が残り、その後にそのコミットによって変更されたファイルのリストが続きます。

于 2013-01-08T04:19:31.823 に答える
22

次に、以下を使用して、現在のブランチにある変更されたファイルのリストを取得し、マスターと比較します(比較先ブランチは簡単に変更できます)。

git log --oneline --pretty="format:" --name-only master.. | awk 'NF' | sort -u

以前、私はこれに依存していました:

git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort -k 2,2 -u

ファイルのみのリストとその状態(追加、変更、削除)を出力します。

A   foo/bar/xyz/foo.txt
M   foo/bor/bar.txt
...

並べ替えの-k2,2オプションを使用すると、変更の種類(A、M、D、)ではなくファイルパスで並べ替えられます。

于 2016-04-07T08:01:38.797 に答える
9

次のようなファイル名だけが必要な場合:

dir/subdir/file1.txt
dir/subdir2/file2.sql
dir2/subdir3/file6.php

( tarコマンドのソースとして使用します)、コミットメッセージも除外する必要があります。

これを行うには、次のコマンドを使用します。

git log --name-only --oneline | grep -v '.{7} '

grepコマンドは、-v7つの記号(コマンドのGitハッシュの長さ)で始まり、その後にスペースが続くすべての行(パラメーター)を除外しgit logます。そのため、すべてのGithash message行を除外し、ファイル名のある行のみを残します。

便利な改善点の1つはuniq、重複する行を削除するために追加することです。これにより、次のようになります。

git log --name-only --oneline | grep -v '.{7} ' | uniq
于 2014-06-04T10:35:07.140 に答える