--assume-unchangedとマークされたファイルのリストを取得できますか?


325

何にマークしました--assume-unchangedか?そのオプションを使用して私が隠したものを見つける方法はありますか?

私は経由掘りをした.git/ディレクトリと私は期待するもののように見えるが、それはどこかでなければならないことは何も表示されません。数週間前にこの方法でマークしたことを忘れていたので、今後の開発者のためにこれらの詳細を文書化する必要があります。

回答:


449

使用できます git ls-files -v。印刷される文字が小文字の場合、ファイルは「変更されていない」とマークされます。

変更されていないファイルのみを印刷するには、次のコマンドを使用します。

git ls-files -v | grep '^[[:lower:]]'

怠惰なプログラマーを受け入れるには、これをgitエイリアスに変えます。.gitconfigファイルを編集して、次のスニペットを追加します。

[alias]
    ignored = !git ls-files -v | grep "^[[:lower:]]"

入力git ignoredすると、次のような出力が得られます。

h path/to/ignored.file
h another/ignored.file

42
git ls-files -v | grep ^ [az]
Matt R

17
私のOSには奇妙な照合設定が含まれているため、Mattのコマンドは機能しませんでした。ここで私は下に追加何[alias]のセクション私.gitconfigignored = !git ls-files -v | grep "^[[:lower:]]"
阿部Voelker

15
[az]が機能しない理由は、シェルがワイルドカードとして展開するためです。現在のディレクトリにそのパターン(つまり、1つの小文字)に一致するファイルが含まれている場合、その展開はファイルの名前になります。「[az]」のように引用符を追加してみてください
DomQ 2012年

7
git ls-files -v | grep -e "^ [az]"
Amir Ali Akbari

12
推奨されるエイリアスは、現在のディレクトリ以下で変更されていないファイルを見つけるために機能します。リポジトリ内のすべての「仮定されていない」ファイルのリストが必要な場合は、次のものが必要ですgit ls-files -v `git rev-parse --show-toplevel` | grep "^[a-z]"
Trebor Rude

65

一発ギャグ

git ls-files -v | grep "^[a-z]"

エイリアスを使用する

私見、次のようにgit hiddenマークされたファイルに適しています--assume-unchanged

git config --global alias.hidden '!git ls-files -v | grep "^[a-z]"'

ここに私が持っている関連するエイリアスのリストがあります~/.gitconfig

[alias]
  hide = update-index --assume-unchanged
  unhide = update-index --no-assume-unchanged
  unhide-all = update-index --really-refresh
  hidden = !git ls-files -v | grep \"^[a-z]\"
  ignored = !git status -s --ignored | grep \"^!!\"

サブディレクトリで動作し、引数をサポートするには

  hidden = "!f(){ git -C \"$GIT_PREFIX\" ls-files -v \"$@\" | grep \"^[a-z]\";}; f"
  ignored = "!f(){ git -C \"$GIT_PREFIX\" status -s --ignored \"$@\" | grep \"^!!\";}; f"

例えば:

 # cd target
 # git ignored classes

ファイルのステータスについて

私の場合、ほとんどの隠しファイルはフラグhでマークされていますが、のマニュアルによると実際には他にもいくつかのフラグがありますgit-ls-files-v

-v
    Similar to -t, but use lowercase letters for files that are 
marked as assume unchanged (see git-update-index(1)).

についてgit ls-files-t

This option (-t) identifies the file status with the following tags 
(followed by a space) at the start of each line:

H   cached
S   skip-worktree
M   unmerged
R   removed/deleted
C   modified/changed
K   to be killed
?   other

1
覚えやすい素敵なエイリアス:)ありがとう
PlagueHammer

1
ここではいくつかのより柔軟な変異体は、次のとおりですhidden = "!f() { git ls-files -v \"$@\" | grep \"^[a-z]\"; }; f"ignored = "!f() { git status -s --ignored \"$@\" | grep \"^!!\"; }; f"。これにより、たとえば、git ignored -- PATH1 PATH2特定のパスで無視されたファイルのみを一覧表示できます(無視されたファイルが多数ある場合に役立ちます)。
sls

エイリアスをありがとう
MOHRE 2017年

22

このコマンドは、私にとってより一貫して機能します。「想定されていない」と表示されているファイルのみを印刷します。

git ls-files -v|grep "^h"

私はさまざまな環境でこれを何度も使用してきましたが、完全に機能します。


5
Windowsプロンプトで、 grep "^h"単一引用符の代わりにします
beautifulcoder

7

Select-String \ slsを使用したPowerShellソリューション

git ls-files -v | sls -pattern ^h -casesensitive

3

findstrを使用したWindowsコマンドラインソリューション:

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