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
или некоторой подобной команды (где мне не нужно разбирать много вывода, как в случае git status
)?
Ответы
Ответ 1
Вы хотите использовать git diff --cached
. С помощью --name-only
он перечислит все файлы, которые вы изменили в индексе относительно HEAD. С помощью --name-status
вы также можете получить символ статуса, а --diff-filter
вы можете указать, какой набор файлов вы хотите отобразить (например, "A" для недавно добавленных файлов). Используйте -M
, чтобы включить обнаружение движения и -C
для обнаружения копии, если вы хотите их.
Для строгого чтения того, что вы написали, git diff --cached --name-only --diff-filter=A
отобразит все файлы, которые вы добавили с HEAD, которых нет в HEAD.
Ответ 2
Разъяснение:. Это способ показать файлы, которые я намерен добавить. Это не то, что искали OP, но я оставлю этот пост, если он будет полезен другим.
Кажется, это показывает только файлы, которые я добавил [к моей рабочей копии, а не индекс], но не соответствуют моим стандартным шаблонам игнорирования:
$ git ls-files --others --exclude-standard
Без --exclude-standard
он также показывает файлы, которые игнорируются при запуске git status
.