gitstatusにステージングされたファイルのみを表示させる方法


86

ステージングされたファイル名のみのリストを取得したいと思います。私はのための同等のフラグを見つけることができません--name-onlyためのgit statusコマンド。良い選択肢は何ですか?

ファイルリストはphp -l(PHP lint構文チェッカー)にパイプされます。

解決策:完全なコマンド

git diff --name-only --cached | xargs -l php -l

3
そのコマンドを手動で実行している場合は、プリコミットフックに入れたいと思われるかもしれません。kernel.org/pub/software/scm/git/docs/githooks.html
MatrixFrog 2010

回答:



14

受け入れられた回答では、どのような変更があったはわかりません。

はい、構文チェッカーではなく、ステージングされていないファイルでいっぱいのリポジトリを持つ普通の人であり、ステージングされたファイルがどうなるかを知りたい場合は、別のコマンドがあります。

git status --short | grep '^[MARCD]'

これは次のようなものにつながります:

M  dir/modified_file
A  dir/new_file
R  dir/renamed -> dir/renamed_to
C  dir/copied_file
D  dir/deleted_file

明らかに、このファイルはステージングされており、git commit
deleted_fileが削除された後、
new_file追加され、
renamed_fileになりますrenamed_to

短い形式の出力の説明は次のとおりです:https//git-scm.com/docs/git-status#_short_format


1.私のバージョン(2.25.0.windows.1)では、「M」と「D」の前にスペースがあります。2.別の状態もあります-「??」どう解釈したらいいのかわからない。
itsho

@itshoスペースは、ステージングされていないことを示します。この答えは、行の最初の文字と一致するため、正解です。最初の文字が設定されている場合、それはステージングされたファイルです。スペースの場合は無視されます。
Avner

1
これは天才です!-同様のことについてはgitフラグが必要です
Norfeldt 2010

4

@ coffman21の回答に触発されて、次のエイリアスを設定しました.zshrc

alias gst="git status"
alias gst-staged="git status --short | grep '^\w.'"
alias gst-unstaged="git status  --short | grep '^\W.'"
alias gst-unstaged-tracked="git status  --short | grep '^\s.'"
alias gst-untracked="git status --short | grep '^??'"

それは他の誰にとっても役に立つかもしれません。したがって、それを回答のスタックに追加します。


1
一貫性の着色のためにあなたが追加することができます.ように、両方2つの初期文字を着色する、grepの中で:grep '^\w.'grep '^\W.'grep '^\s.'
geekley

ただし、最後のものは必要ありません。それはすでに2つの文字がある??
geekley

これは修正されました。おかげで再び
Norfeldt

0

コードが変更されたステージングされたファイルを表示するには

git diff --staged   

または--stagedの同義語である--cachedを使用する

git diff --cached

または、コードを変更せずにファイル名のみを表示する

git diff --staged --name-only  

git-diffマニュアル

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.