Могу ли я получить список файлов с пометкой "Без изменений"?
Что я обозначил как --assume-unchanged
? Есть ли способ узнать, что я убрал, используя эту опцию?
Я вырыл каталог .git/
и не вижу ничего похожего на то, что ожидаю, но он должен быть где-то. Я забыл, что я обозначил этот путь несколько недель назад, и теперь мне нужно документировать эти детали для будущих разработчиков.
Ответы
Ответ 1
Вы можете использовать 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
Ответ 2
Один вкладыш
git ls-files -v | grep "^[a-z]"
Использовать псевдонимы
IMHO, 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 \"[email protected]\" | grep \"^[a-z]\";}; f"
ignored = "!f(){ git -C \"$GIT_PREFIX\" status -s --ignored \"[email protected]\" | 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
Ответ 3
Эта команда работает более последовательно для меня. Он будет печатать только файлы, которые перечислены как "предположительно без изменений".
git ls-files -v|grep "^h"
Я использовал это много раз в разных средах, и он отлично работает.
Ответ 4
Решение PowerShell, использующее Select-String\sls
git ls-files -v | sls -pattern ^h -casesensitive
Ответ 5
Решение командной строки Windows с использованием findstr:
git ls-files -v | findstr /B h