Могу ли я получить список файлов, помеченных --assume-неизменными? - PullRequest
293 голосов
/ 02 марта 2010

Что я пометил как --assume-unchanged? Есть ли способ узнать, что я спрятал, используя эту опцию?

Я копался в каталоге .git/ и не вижу ничего, похожего на то, что я ожидал, но оно должно быть где-то. Я забыл, что я пометил таким образом несколько недель назад, и теперь мне нужно документировать эти детали для будущих разработчиков.

Ответы [ 5 ]

410 голосов
/ 02 марта 2010

Вы можете использовать git ls-files -v. Если напечатанный символ в нижнем регистре, файл помечается как «без изменений».

Для печати только тех файлов, которые не изменились, используйте:

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

Чтобы обнять вашего ленивого программиста, превратите его в git alias . Отредактируйте файл .gitconfig, чтобы добавить этот фрагмент:

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

Теперь, набрав git ignored, вы получите следующий вывод:

h path/to/ignored.file
h another/ignored.file
56 голосов
/ 07 мая 2016

Один лайнер

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 \"^!!\"

Чтобы заставить его работать в подкаталогах и поддерживать arguments :

  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
22 голосов
/ 16 апреля 2015

Эта команда работает более последовательно для меня. Он будет печатать только те файлы, которые указаны как «предположим, без изменений».

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

Я использовал это много раз в разных средах, и он отлично работает.

7 голосов
/ 30 марта 2018

решение PowerShell с использованием Select-String \ sls

git ls-files -v | sls -pattern ^h -casesensitive
3 голосов
/ 26 декабря 2018

Командная строка Windows решение с использованием findstr :

git ls-files -v | findstr /B h
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...