2012-03-28 13 views

答えて

7

お互いに何を意味するのかよく分かりませんが、個々のリスト(たとえばすべての変更されたファイル)が必要な場合はgit ls-filesに正しいフラグ(変更されたファイルの場合は-m)を使用できます。一度にすべての情報を取得したい場合は、git status --porcelainを使用して、ステータスのスクリプト解析可能な出力を得ることができます。あなたはおそらく欲しい

+0

Gitのステータスは、リモートのrepoに追加された新しいディレクトリ/ファイルをリストしません。それは? – Jean

+0

@alertjean:「新しい」とはどういう意味ですか?彼らはuntrackedですか?追加されていますがコミットされていませんか彼らは何ですか? –

+0

ありがとう、これは私が探していたものです。今私は例えば'geany $(git ls-files -m) ' – mwfearnley

9

のようなものです:

git fetch  # update what you know about the remote repo 
git diff --name-status master origin/master 

しかし、それはあなたがあなたの質問からdiffをしたい正確にどの枝言うことはかなり困難です。これを行うには

7

一つの方法は、whatchangedコマンドである:

$ git whatchanged 

これは、それぞれのために変更されたファイルを示すには、ツリーにコミットし、同様に詳細を見て使用することができます。 以前に削除されたファイルを削除するには:これらのファイルを一覧表示するための最良の方法は、例えば

--porcelain gitの状態を使用しているgit help whatchanged

23

を見てみましょう

git status --porcelain | awk 'match($1, "D"){print $2}' | xargs git rm 
+0

最後に最後のパイプを削除すると、削除されたファイルをリストする良い方法です。非常に長いgitステータスを持ち、特定のステータスをフィルタリングしたい場合に役立ちます。 – IanVS

5

ドライランを使用してください( git addの-n)オプション:コマンド01と

git add -A -n

+0

ええ、それは私が欲しかったthats! – Doug

1

使用タグと

例:コミットと

git diff v1.0.1 v1.0.2 --name-status 

例:

git diff b79810fc4d be69e41d1c --name-status 

それはそのステータスを持つすべての更新ファイル一覧が表示されます: Mを - Dを修正 - Aを削除 - 追加

0

Toただ、現在変更されたファイルの名前とステータスファイルを取得しますが、単純にすることができます:

git diff --name-status

あなたは、このような裸の出力が得られます:今

M  a.txt 
M  b.txt 

、パイプcutへの出力を抽出するために、第二カラム:

git diff --name-status | cut -f2

次に、あなただけのファイル名を持っています:

a.txt 
b.txt 
関連する問題