Git добавить только все новые файлы, а не измененные файлы

Есть ли способ добавлять только новые файлы и не добавлять измененные файлы с помощью git? То есть файлы, перечисленные как не проверенные с состоянием git.

Кроме того, если вы добавляете каждый файл отдельно.

Не нужно делать это в моем случае, на мой вопрос отвечает реальный вопрос: Как сделать git -diff и git log игнорировать новые и удаленные файлы?

То есть, не показывайте diff для новых файлов, поэтому я спрашиваю об этом больше, потому что я не мог найти ответ на него где-нибудь.

Ответ 1

Может

git add $(git ls-files -o --exclude-standard)

git ls-files позволяет вам перечислить файлы, управляемые git, отфильтрованные некоторыми параметрами. -o в этом случае фильтрует его, чтобы показывать только "другие (т.е. файлы без следа)"

Оператор $(...) передает возвращаемое значение этой команды в качестве аргумента git add.

Ответ 2

Вы можете использовать короткий режим состояния git (см. man git -status (1)), который дает следующий результат

Без короткого режима:

$ git status

...


# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   README
#   application/libraries/Membres_exception.php
no changes added to commit (use "git add" and/or "git commit -a")

С коротким режимом:

$ git status -s
 M application/models/membre_model.php
?? README
?? application/libraries/Membres_exception.php

Затем, используя grep, awk и xarg, вы можете добавить файлы, где первый столбец ??.

$ git status -s | grep '??' | awk '{ print $2 }' | xargs git add 

и убедитесь, что он сработал:

$ git status
# On branch new
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   README
#   new file:   application/libraries/Membres_exception.php