git: список только новых файлов - PullRequest
32 голосов
/ 25 января 2012

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

Ответы [ 6 ]

75 голосов
/ 21 марта 2013

Не используйте 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
19 голосов
/ 25 января 2012

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

16 голосов
/ 25 января 2012

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

14 голосов
/ 12 ноября 2014

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

git ls-files -o  --exclude-standard

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

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

git ls-files -o  --exclude-standard --full-name
0 голосов
/ 25 июля 2017
git status | grep "new file:" | cut -c 14-

git status | grep "modified:" | cut -c 14- 
0 голосов
/ 22 февраля 2017

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

root@user-ubuntu:~/project-repo-directory# git status -s | grep ??
 ?? src/.../file1.js
 ?? src/.../file2.js
 ?? src/.../file3.js
 ....
...