ローカル/リモートリポジトリのすべての新規/削除/変更されたディレクトリ/ファイルのリストをGITで相互に取得する方法はありますか?
これらのファイルをリストする最良の方法は、git status --porcelainを使用することです
例:以前に削除したファイルを削除するには:
git status --porcelain | awk 'match($1, "D"){print $2}' | xargs git rm
互いの意味がわかりませんが、個々のリスト(変更されたすべてのファイルなど)が必要な場合は、git ls-files
正しいフラグ(変更されたファイルの場合は-m
)。この情報をすべて一度に取得したい場合は、git status --porcelain
は、スクリプト解析可能なステータスの出力を取得します。
これを行う1つの方法は、whatchanged
コマンドを使用することです。
$ git whatchanged
これは、ツリー内の各コミットで変更されたファイルを示し、詳細を確認するためにも使用できます。を見てみましょう git help whatchanged
おそらく欲しいものは次のようなものです:
git fetch # update what you know about the remote repo
git diff --name-status master Origin/master
しかし、質問からどのブランチを比較したいかを正確に伝えることは非常に困難です。
git add
のドライラン(-n)オプションを使用します。
git add -A -n
現在変更されているファイルのファイル名とステータスのみを取得するには、次のようにします。
git diff --name-status
次のような裸の出力が得られます。
M a.txt
M b.txt
次に、出力をcut
にパイプして2番目の列を抽出します。
git diff --name-status | cut -f2
次に、ファイル名だけがあります。
a.txt
b.txt
コマンド--name-status
タグ付きの例:
git diff v1.0.1 v1.0.2 --name-status
コミットの例:
git diff b79810fc4d be69e41d1c --name-status
更新されたすべてのファイルとそのステータスが一覧表示されます:M
-修正済みD
-削除済みA
-追加