Подтвердить что ты не робот

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)?

4b9b3361

Ответ 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.