変更を含むすべてのフォルダを取得するgitコマンドは何ですか?変更を含むすべてのフォルダを取得するGitコマンド
git diff --name-only
しかし、実際のファイルはすべて変更されていますか?これは相対パスからのすべてのファイル名を削除し、任意の重複を除去するxargs
dirname
から
git diff --name-only | xargs dirname | uniq
スルー
変更を含むすべてのフォルダを取得するgitコマンドは何ですか?変更を含むすべてのフォルダを取得するGitコマンド
git diff --name-only
しかし、実際のファイルはすべて変更されていますか?これは相対パスからのすべてのファイル名を削除し、任意の重複を除去するxargs
dirname
から
git diff --name-only | xargs dirname | uniq
スルー
変化を含む経路を取得するために、パイプ出力。例えば
:dirname
後
$ git diff --name-only
app/lib/sub/dirlist.cpp
app/net/rpc.cpp
config/config.txt
が
$ git diff --name-only | xargs dirname | uniq
app/lib/sub
app/net
config
xargs
を返しますが、複数の行(リスト出力)を取り、順番に各上で次のコマンド(この例ではdirname
)を実行します。 uniq
は出力から重複を削除します。
ありがとうございますこれは素晴らしいです – yetanotherposter
'| uniq'を実行して重複を破棄します。 (Gitがソートされた内部のツリー順でトラバースするのでソートは必要ありません) – torek
OSXのdirnameは1つの引数しか許さないので、OSXでは "xargs -n1 dirname"を使います。 xargsの-n1はstdinから一度に1行を取り出し、dirnameに渡します。 – DavidN
A/B/C/aaa.txtが変更されている場合は、どのフォルダを使用しますか? A /またはA/B/C /またはそれ以外? – ElpieKay
ルートgitフォルダからすべてのサブディレクトリ名が必要です。ですから、基本的にはルートgitリポジトリであればA/ – yetanotherposter
のフォルダ名が返されます。この 'git log --pretty =" go-away:%h "--name-only | grep -v go-away:| grep/| awk -F/'{print $ 1}' | sort -u' – ElpieKay