git ls-files: как идентифицировать новые файлы (добавлены, не зафиксированы)?
после того, как я назвал git add <file> команда git status покажет мне что-то типа:
...
new file: <file>
почему я не могу управлять, чтобы получить ту же информацию с помощью ls-files, он (ls-files -tc в этом случае) покажет мне:
H <commited file>
H <other commited file>
H <file>
похоже, что для новых файлов не существует переключателя командной строки. Файл сообщается как кэшированный, что нормально, но как я могу узнать, что он не зафиксирован в это время?
возможно ли это с ls-files или аналогичная команда (где I не нужно разбирать много вывода, Как в случае git status)?
2 ответов:
вы хотите использовать
git diff --cached. С--name-onlyв нем будут перечислены все файлы, которые вы изменили в индексе относительно HEAD. С--name-statusвы можете получить символ статуса тоже, с--diff-filterвы можете указать, какой набор файлов вы хотите показать ('A' для вновь добавленных файлов, например). Используйте-Mдля включения обнаружения перемещения и-Cдля обнаружения копирования, если вы хотите их.для самого строгого чтения того, что вы написали,
git diff --cached --name-only --diff-filter=Aперечислит все файлы, которые вы добавили с головы, которая не существует в голове.
пояснение: Это способ показать файлы, которые я намерение добавить. Это не то, что искал OP, но я оставлю этот пост, если он будет полезен другим.
Это, кажется, показывает только файлы, которые я добавил [к моей рабочей копии, а не к индексу] но не соответствуют моим стандартным шаблонам игнорирования:
$ git ls-files --others --exclude-standardбез
--exclude-standard, это также показывает файлы, которые игнорируются при запускеgit status.
Comments