確認 - git コマンド




どのようにコミットのすべてのファイルを一覧表示するには? (18)

" git show --stat "(Ryanのおかげ)とsedコマンドの組み合わせは、あなたのためにデータを整理する必要があります:

git show --stat <SHA1> | sed -n "/ [\w]\*|/p" | sed "s/|.\*$//"

それは修正されたファイルのリストだけを生成します。

私は無関係な情報なしで、ハッシュ(SHA1)によって与えられたコミットの一部であったすべてのファイルのきれいにフォーマットされたリストを提供する簡単なgitコマンドを探しています。

私が試してみました:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

ファイルをリストしていますが、それぞれのファイルには不要な差分情報も含まれています。

私が望むリストだけを提供する別のgitコマンドがあるので、 git show出力から解析するのを避けることができますか?


OK、特定のコミットですべてのファイルを表示する方法がいくつかあります...

情報を減らし、コミットしたファイルの名前だけを表示するには、単に--name-onlyまたは--name-status flag ...を追加することができます。これらのフラグは、前のコミットとは異なるファイル名を表示します欲しいです...

ですから、 git diffあとに--name-onlyをつけて、 <sha0> <sha1>後に2つのコミットハッシュを--name-onlyことができます。

git diff --name-only 5f12f15 kag9f02 

私はまた、以下のイメージを作成して、これらの状況ですべてのステップを実行するようにしています。


標準のgit diffコマンドを使用する (スクリプトにも適しています):

git diff --name-only <sha>^ <sha>

変更されたファイルのステータスも必要な場合:

git diff --name-status <sha>^ <sha>

これは、マージコミットでうまくいきます。


あなたもすることができます

git log --name-only

さまざまなコミット、コミットメッセージ、変更されたファイルをブラウズすることができます。

プロンプトを戻すには、qと入力します。


これはうまくいくはずです:

git status

これは、ステージングされていないものとステージングされたものを表示します。


これを使って、2つのチェンジセットの間に変更されたファイルのリストを取得します:

git diff --name-status <SHA1> <SHA2> | cut -f2

また、 git logよりも低レベルである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-only SHA1^ SHA1

これは、ログメッセージ、余分な改行、またはその他の混乱を表示しません。 これは現在のコミットだけでなく、どのコミットに対しても機能します。 なぜまだ言及されていないのかわからないので、私はそれを追加しています。


ログを表示します。

COMMITは空白( "")でもかまいません。また、sha-1またはsha-1は短縮されています。

git log COMMIT -1 --name-only

これはファイルだけを一覧表示し、後で処理するのに非常に便利です。

git log COMMIT -1 --name-only --pretty=format:"" | grep "[^\s]"

名前と変更のためにこのコマンドを試してください。

git show --stat <commit-hash>

ファイル名のみを表示する

git show --stat --name-only  <commit-hash>

最後にコミットハッシュを取得してからこのコマンドを試してください

git log -1またはすべてのgit log


最も簡単な形式:

git show --stat (hash)

これは覚えやすく、必要な情報をすべて提供します。

あなたが本当にファイルの名前だけを望むなら、--name --name-onlyオプションを追加することができます。

git show --stat --name-only (hash)


最近、私は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

私はgitkがこれに望ましくないと仮定します。 その場合は、 git show --name-only <sha>試してください。


私は変更されたエイリアスをかなり頻繁に使用します。 それを設定するには:

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

私はエイリアスの要約を共有すると思っていました。また、 'zsh'をgitでうまく使うと、chroma keysはうまくいき、コマンドプロンプトを変えることでいつでもブランチが欲しいと言います。

SVNからのカバーについては、これは便利です:(これは異なるスレッドのアイデアの組み合わせです。コピー/ペーストの使い方を知っているに過ぎません)

.gitconfig:
        ls = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset' --abbrev-commit --date=relative --name-status

>>git ls
* 99f21a6 - (HEAD -> swift) New Files from xcode 7 (11 hours ago) Jim Zucker| 
| A     icds.xcodeproj/project.pbxproj
| A     icds.xcodeproj/project.xcworkspace/contents.xcworkspacedata
| A     icds/AppDelegate.m
| A     icds/Assets.xcassets/AppIcon.appiconset/Contents.json

* e0a1bb6 - Move everything to old (11 hours ago) Jim Zucker| 
| D     Classes/AppInfoViewControler.h
| D     Classes/AppInfoViewControler.m
| D     Classes/CurveInstrument.h


.gitconfig: 
       lt = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset' --abbrev-commit --date=relative

>>git lt
* 99f21a6 - (HEAD -> swift) New Files from xcode 7 (11 hours ago) Jim Zucker
* e0a1bb6 - Move everything to old (11 hours ago) Jim Zucker
* 778bda6 - Cleanup for new project (11 hours ago) Jim Zucker
* 7373b5e - clean up files from old version (11 hours ago) Jim Zucker
* 14a8d53 - (tag: 1.x, origin/swift, origin/master, master) Initial Commit (16 hours ago) Jim Zucker


.gitconfig
lt = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset' --abbrev-commit --date=relative

>> git lt

commit 99f21a61de832bad7b2bdb74066a08cac3d0bf3c
Author: Jim Zucker <[email protected]>
Date:   Tue Dec 1 22:23:10 2015 -0800

    New Files from xcode 7

A       icds.xcodeproj/project.pbxproj
A       icds.xcodeproj/project.xcworkspace/contents.xcworkspacedata


commit e0a1bb6b59ed6a4f9147e894d7f7fe00283fce8d
Author: Jim Zucker <[email protected]>
Date:   Tue Dec 1 22:17:00 2015 -0800

    Move everything to old

D       Classes/AppInfoViewControler.h
D       Classes/AppInfoViewControler.m
D       Classes/CurveInstrument.h
D       Classes/CurveInstrument.m

私は使用したい

git show --stat <SHA1>^..<SHA2>

$ git log 88ee8^..88ee8 --name-only --pretty="format:"

git show --name-only commitCodeHere




git-show