Добавление только не обработанных файлов

Одна из команд, которые я нахожу невероятно полезными в Git, - это git add -u, чтобы выбросить все, кроме необработанных файлов, в индекс. Есть ли обратная сторона этого? В последние несколько месяцев я часто оказывался в положении, когда я интерактивно добавлял некоторые обновления в индекс, и я хочу добавить все необработанные файлы к этому индексу до того, как я зафиксирую.

Есть ли способ добавить только индексированные файлы в индекс без их идентификации отдельно? Я не вижу ничего очевидного в документах справки, но, возможно, мне не хватает его?

Спасибо.

Ответ 1

Легко с git add -i. Введите a (для "add untracked" ), затем * (для "все" ), затем q (чтобы выйти), и все готово.

Чтобы сделать это с помощью одной команды: echo -e "a\n*\nq\n"|git add -i

Ответ 2

git ls-files -o --exclude-standard дает невоспроизводимые файлы, поэтому вы можете сделать что-то вроде ниже (или добавить к нему псевдоним):

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

Ответ 3

Не совсем то, что вы ищете, но я нашел это весьма полезным:

git add -AN

Будет добавлять все файлы в индекс, но без их содержимого. Файлы, которые были без следа, теперь ведут себя так, как если бы их отслеживали. Их содержимое будет отображаться в git diff, и вы можете добавить его интерактивно с помощью git add -p.

Ответ 4

Вы можете добавить это в свой файл ~/.gitconfig:

[alias]
    add-untracked = !"git status --porcelain | awk '/\\?\\?/{ print $2 }' | xargs git add"

Затем из командной строки просто запустите:

git add-untracked

Ответ 5

Люди предложили вывести вывод git ls-files в git add, но это произойдет в случаях, когда есть имена файлов, содержащие пробелы или символы глобуса, такие как *.

Безопасный способ:

git ls-files -o --exclude-standard -z | xargs -0 git add

где -z сообщает git использовать терминаторы строк \0, а -0 сообщает xargs то же самое. Единственным недостатком такого подхода является то, что параметр -0 нестандартен, поэтому его поддерживают только некоторые версии xargs.

Ответ 6

git ls-files перечислены файлы в текущем каталоге. Если вы хотите перечислить неиспользуемые файлы из любого места в дереве, это может работать лучше:

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel)

Чтобы добавить все необработанные файлы в дерево:

git ls-files -o --exclude-standard $(git rev-parse --show-toplevel) | xargs git add

Ответ 7

Я попробовал это, и это сработало:

git stash && git add . && git stash pop

git stash только поместит все измененные отслеживаемые файлы в отдельный стек, затем оставленные файлы останутся неотслеживаемыми. Затем, делая git add. установит все файлы без отслеживания, как требуется. В конце концов, чтобы вернуть все измененные файлы из стека, выполнив git stash pop

Ответ 8

Если у вас тысячи незатрещенных файлов (тьфу, не спрашивайте), то git add -i не будет работать при добавлении *. Вы получите сообщение об ошибке Argument list too long.

Если вы также находитесь в Windows (не спрашивайте # 2:-) и вам нужно использовать PowerShell для добавления всех невоспроизводимых файлов, вы можете использовать эту команду:

git ls-files -o --exclude-standard | select | foreach { git add $_ }

Ответ 9

Здесь много хороших советов, но внутри Powershell я не смог заставить его работать.

Я являюсь разработчиком .NET, и мы в основном все еще используем ОС Windows, так как мы не использовали ядро .Net и кроссплатформенность, поэтому мое ежедневное использование с Git происходит в среде Windows, где чаще всего используется оболочка Powershell. а не Git Bash.

Чтобы создать псевдонимную функцию для добавления неотслеживаемых файлов в репозиторий Git, можно выполнить следующую процедуру.

Внутри вашего $ профиля файл Powershell (если он отсутствует - вы можете запустить: New-Item $ Profile)

Блокнот $ Профиль

Теперь добавьте этот метод Powershell:

function AddUntracked-Git() {
 &git ls-files -o --exclude-standard | select | foreach { git add $_ }
}

Сохраните файл $ profile и перезагрузите его в Powershell. Затем перезагрузите файл профиля $ с помощью:. $ профиль

Это похоже на исходную команду в * nix средах IMHO.

Поэтому в следующий раз, если вы разработчик, использующий Powershell в Windows против Git-репозитория, и хотите просто включить неотслеживаемые файлы, вы можете запустить:

AddUntracked-Гит

Это следует соглашению Powershell, где у вас есть существительные глагола.

Ответ 10

мерзавец добавить. (добавьте все файлы в этот каталог)

git add -all (добавить все файлы во все каталоги)

git add -N может быть полезен для перечисления, какие из них будут позже...

Ответ 11

Чтобы добавить все необработанные файлы git команда

git add -A

Также, если вы хотите получить более подробную информацию о различных доступных параметрах, вы можете ввести команду

git add -i

вместо первой команды, с этим вы получите больше опций, включая возможность добавления всех невоспроизводимых файлов, как показано ниже:

$git add -i warning: LF будет заменен CRLF в README.txt. файл будет иметь свои первоначальные окончания строки в вашем рабочем каталоге. предупреждение: LF будет заменен CRLF в package.json.

* Команды * 1: статус 2: обновление 3: возврат 4: добавление untracked 5: patch 6: diff 7: quit 8: help Что теперь > a