2009-11-29 12 views
22

次のように入力するとコミットされるファイルのリストを取得する方法はありますか?コミットするファイルだけを一覧表示するにはどうすればよいですか?

git commit -m "my changes" 

gitステータスリストが多すぎます。私はすべての言葉を削除することができますが、私はむしろそうしたくありません。そして、私は、追跡されていないファイルについて言われたくありません。

私は

git ls-files -md 

を試みたが、それは最近追加されたが、まだコミットしていないされているファイルは表示されません。

私はあなたが

svn status -q 

例えば $のsvn状態-q
file.py
M DIR/database.py
M開始から得るだろうと同じ出力を探しています

.py

答えて

4

あなたは試すことができます:

git diff --name-status 

私は次のようになる:

$ git diff --name-status 
M  README.markdown 

未追跡のファイルなし。

+2

これは正しくありません。問題は、 "私が' git commit -m message'と言うときにコミットされるものは何か。これは、*コミットされないものに近い、作業ツリーとキャッシュの違いを示します。 –

26

これは私が探していたものです。私が必要としていたリードのためにnotnoopに感謝します。他の人に役立つように私のソリューションをポストしたいと思っていました。

git diff HEAD --name-only 

私は、最初の行で見つかったファイルを

git commit -s -F mesage.txt 

を行うことを意図しているので。

私の意図は、インデックスを完全に無視する、つまりgit addを行う必要がないという小さなシステムを作ることです。 (私の理解から、このインデックスは、ワークフローの標準では決してないパッチを作成する際に役立ちます)

+2

あなたは 'git diff --cached --name-only'を意味しませんか? 'diff HEAD'は最後にコミットされ、プッシュされなかったファイルを表示します。 '--cached'は' git commit'を実行するときにコミットされるファイルを表示します。 – gcb

+0

'git diff --staged --name-only'も動作します。 gitについての考え方に応じて、--cachedの代わりに--staged [同義語](https://stackoverflow.com/a/39877896)を使いたいかもしれません。 – SpeedCoder5

8

このコマンドは、インデックス/キャッシュ/ステージング領域内のどのファイルが現在のHEAD(およびそれらが追加、変更または削除であるかどうか)は、明示的なパスなしでgit commitを使用するか、-aオプションを使用した場合にコミットされる変更です。形式は、表示するsvn statusの出力と合理的に似ています。

git diff --cached --name-status 
3

私はOPは、元はgit statusを避けるように頼ま知っているが、私は、これは後世のために残していいだろうと感じた(すなわちOPの予約を共有していない他の人)。

git status --porcelain | grep -v '^[ |??]' | sed -e 's/[A-Z] *//' 

私の推論は、それが困惑のまさにこのタイプのために建てられたようgit status --porcelainが思われることです...

ソース:http://git-scm.com/docs/git-status.html

EDIT: あなたは各ファイル名の前にはgitの変更タグを保存しておきたい場合sed -e 's/[A-Z] *//'を使用しないことを選択したことがあります。

+0

+1。私は 'git status --porcelain'をスクリプトで使うことに同意します。私はhttp://stackoverflow.com/a/6978402/6309で多くのことを文書化しています。「新しいオプション\ [' - - porcelain' \]は、コマンドのネイティブ出力フォーマットを出力して、より扱いやすくなります磁器。" – VonC

+0

これは、git push中にプッシュされる(git add/commmitによってステージングされた)実際のファイルをリストしていないようです。 – Paul

関連する問題