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

Git: список только для новых файлов

Когда я делаю git status, я получаю список файлов с префиксом new file:. Как я могу получить только этот список? Я хочу обработать эти файлы в простом цикле в маленькой оболочке script.

4b9b3361

Ответ 1

Я бы использовал что-то вроде git status --porcelain | grep "^A" | cut -c 4-

Ответ 2

Не используйте grep для разбора вывода git. git почти наверняка есть то, что вы ищете для встроенного (за исключением случаев, когда вы идете на действительно продвинутые вещи).
Вы можете использовать git diff, чтобы показать изменения. --name-only показывает только имена файлов. --diff-filter=A перечислены только добавленные файлы.
Если вы хотите увидеть новые файлы, которые вы уже добавили в индекс, используйте --cached, иначе опустите его. Чтобы увидеть как diff, так и HEAD.
Команды выглядят так:

git diff --name-only --diff-filter=A --cached # All new files in the index  
git diff --name-only --diff-filter=A          # All files that are not staged  
git diff --name-only --diff-filter=A HEAD     # All new files not yet committed

Ответ 3

Вы можете использовать git status --short, чтобы получить список файлов.

Ответ 4

Вместо синтаксического анализа вывода "git status", вероятно, более элегантно использовать

git ls-files -o  --exclude-standard

Как и в случае с git status, ls-files будет выдавать результат относительно вашего рабочего каталога.

Возможно, вы захотите включить опцию --full-name:

git ls-files -o  --exclude-standard --full-name

Ответ 5

Список новых файлов или получение файлов, которые будут добавлены в git, можно получить с помощью команды git status и grep, например git status -s | grep ??

[email protected]:~/project-repo-directory# git status -s | grep ??
 ?? src/.../file1.js
 ?? src/.../file2.js
 ?? src/.../file3.js
 ....

Ответ 6

git status | grep "new file:" | cut -c 14-

git status | grep "modified:" | cut -c 14-