Когда я делаю git status
, я получаю список файлов с префиксом new file:
. Как я могу получить только этот список? Я хочу обработать эти файлы в простом цикле в маленькой оболочке script.
Git: список только для новых файлов
Ответ 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-