私はハッシュ(SHA1)によって与えられたコミットの一部であった、無関係な情報なしですべてのファイルのきれいにフォーマットされたリストを提供する簡単なgit
コマンドを探しています。
私が試してみました:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
ファイルの一覧が表示されますが、不要な差分情報も含まれています。
git show
出力からそれを解析しないようにするために、欲しいリストだけを提供するgit
コマンドがありますか。
優先方法 ( 配管 コマンドであるため、プログラムによるものになります):
$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js
もう1つの方法 (スクリプトにはあまり適していません。これは 磁器 コマンドです。ユーザー向けのものです)
$ git show --pretty="" --name-only bd61ad98
index.html
javascript/application.js
javascript/ie6.js
--no-commit-id
はコミットIDの出力を抑制します。--pretty
引数は、冒頭の曖昧さを避けるために空のフォーマット文字列を指定します。--name-only
引数は、影響を受けたファイル名のみを表示します(Thanks Hank)。-r
引数はサブツリーに再帰することです変更されたファイルのリストを入手したい場合は、
git diff-tree --no-commit-id --name-only -r <commit-ish>
コミット中の全ファイルのリストを取得したい場合は、
git ls-tree --name-only -r <commit-ish>
gitk
はこれには望ましくないと思います。その場合はgit show --name-only <sha>
を試してください。
私は個人的に --stat と --oneline の組み合わせを show コマンドと組み合わせて使用しています。
git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD
追加/削除の統計が欲しくない/欲しくない場合は、 --stat を --name-only に置き換えることができます。
git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD
最近、2回のコミットの間に変更されたファイルをすべてリストする必要がありました。だから私は(これも* nix固有の)このコマンドを使用しました
git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq
更新 :あるいはEthanが指摘しているように
git diff --name-only START_COMMIT..END_COMMIT
--name-status
を使用すると、各ファイルの横に変更(追加、変更、削除など)も含まれます。
git diff --name-status START_COMMIT..END_COMMIT
またすることができます
git log --name-only
そして、さまざまなコミット、コミットメッセージ、変更されたファイルを閲覧することができます。
プロンプトを元に戻すには、qを入力します。
最も簡単な形式:
git show --stat (hash)
覚えやすく、必要な情報がすべて揃います。
本当にファイルの名前だけが欲しいなら、--name-only
オプションを追加することができます。
git show --stat --name-only (hash)
私は changed aliasをかなり頻繁に使います。設定するには:
git config --global alias.changed 'show --pretty="format:" --name-only'
その後:
git changed (lists files modified in last commit)
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)
便利かもしれない同様のコマンド:
git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only
標準のgit diffコマンドを使用する (スクリプトにも適している)
git diff --name-only <sha>^ <sha>
変更されたファイルのステータスも欲しいなら:
git diff --name-status <sha>^ <sha>
これはマージコミットでうまく機能します。
つかいます
git log --name-status
これにより、コミットID、メッセージ、変更されたファイル、およびそれが変更、作成、追加または削除されたかどうかがわかります。ややオールインワンのコマンドです。
$ git log 88ee8 ^ .. 88ee8 --name-only --pretty = "format:"
私はこれを使って2つのチェンジセット間の修正ファイルのリストを取得します。
git diff --name-status <SHA1> <SHA2> | cut -f2
私は使うのが好きです
git show --stat <SHA1>^..<SHA2>
git show --name-only commitCodeHere
git whatchanged
もあります。これはgit log
よりも低レベルです。
NAME
git-whatchanged - Show logs with difference each commit introduces
その下にあるファイルのリストとそのモード、および追加(A
)、削除(D
)、または変更(M
)がある場合は、コミットの要約を出力します。
$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363
ようなものを与えるでしょう:
commit f31a441398fb7834fde24c5b0c2974182a431363
Author: xx <[email protected]>
Date: Tue Sep 29 17:23:22 2015 +0200
added fb skd and XLForm
:000000 100644 0000000... 90a20d7... A Pods/Bolts/Bolts/Common/BFCancellationToken.h
:000000 100644 0000000... b5006d0... A Pods/Bolts/Bolts/Common/BFCancellationToken.m
:000000 100644 0000000... 3e7b711... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h
:000000 100644 0000000... 9c8a7ae... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m
:000000 100644 0000000... bd6e7a1... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h
:000000 100644 0000000... 947f725... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m
:000000 100644 0000000... cf7dcdf... A Pods/Bolts/Bolts/Common/BFDefines.h
:000000 100644 0000000... 02af9ba... A Pods/Bolts/Bolts/Common/BFExecutor.h
:000000 100644 0000000... 292e27c... A Pods/Bolts/Bolts/Common/BFExecutor.m
:000000 100644 0000000... 827071d... A Pods/Bolts/Bolts/Common/BFTask.h
...
私はこの答えが「無関係な情報なしで」実際には一致しないことを知っています、しかし私はまだこのリストが単なるファイル名よりももっと役に立つと思います。
私はこれが好き:
git diff --name-status <SHA1> <SHA1>^
最後のコミットでファイルのリストを変更したいだけなら、単純な1行のコマンドを使用してください。
git diff HEAD~1 --name-only
これに対する完全な答えを見つけました:
git show --name-status --oneline <commit-hash>
私が知ることができるように
which files were just modified M
Which files were newly added , A
Which files were deleted , D
ログを表示します。
COMMITは、空白( "")にすることも、sha-1またはsha-1を短くすることもできます。
git log COMMIT -1 --name-only
これはファイルだけをリストアップします、さらなる処理のために非常に役に立ちます。
git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"
コミットで変更されたファイルをリストします。
git diff --name-only SHA1^ SHA1
これはログメッセージ、余分な改行、または他の混乱を表示しません。これは、現在のコミットだけでなく、あらゆるコミットに対して機能します。なぜそれが かなり になっていないのかわからないので、私はそれを追加しています。
"git show --stat
"(Ryanに感謝)といくつかのsedコマンドを組み合わせると、データが整理されます。
git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"
それは修正されたファイルのリストだけを生成します。
ファイルリストとして表示するには、ハッシュの後に:
を追加するだけの簡単な方法があります。
git show 9d3a52c474:
その後、ドリルインできます。
git show 9d3a52c474:someDir/someOtherDir
ファイルをヒットすると、そのファイルの生のバージョンが得られます。これは、ニースの参照やコードの重要な部分だけを探している場合に必要になることがあります(diffはすべてを混乱させることがあります)
git show 9d3a52c474:someDir/someOtherDir/somefile
この方法の唯一の欠点は、ファイルのツリーが簡単に表示されないことです。
git show HEAD@{0}
私にとってはうまくいく
このコマンドで名前を試して、行数を変更してください。
git show --stat <commit-hash>
ファイル名のみを表示
git show --stat --name-only <commit-hash>
最後のコミットハッシュを取得するには、このコマンドを試してください
git log -1
またはすべてのgit log
の場合
マージコミットで変更されたファイルのリストを取得するためにこれを使います
λ git log -m -1 --name-only --pretty="format:"
configs/anotherconfig.xml
configs/configsInRepo.xml
または
λ git log -m -1 --name-status --pretty="format:"
A configs/anotherconfig.xml
M configs/configsInRepo.xml
Oh-my-zshとgitプラグインを使用している場合は、 glg のショートカットが便利です。
$ glg
commit f014429013e360e1e1ef4f297b315358a5d47b5e
Author: huhu <[email protected]>
Date: Tue Dec 18 07:21:11 2018 +0800
Refine profile page.
mini/app.json | 27 ++++++++-
mini/components/postItemTwo/postItemTwo.wxml | 6 +-
mini/pages/daren/daren.js | 99 ++++++++++++++++++++++++++++++++
mini/pages/daren/daren.json | 3 +
mini/pages/daren/daren.wxml | 16 ++++++
mini/pages/daren/daren.wxss | 27 +++++++++