Ответ 1
Легко с git add -i
. Введите a
(для "add untracked" ), затем *
(для "все" ), затем q
(чтобы выйти), и все готово.
Чтобы сделать это с помощью одной команды: echo -e "a\n*\nq\n"|git add -i
Одна из команд, которые я нахожу невероятно полезными в Git, - это git add -u
, чтобы выбросить все, кроме необработанных файлов, в индекс. Есть ли обратная сторона этого? В последние несколько месяцев я часто оказывался в положении, когда я интерактивно добавлял некоторые обновления в индекс, и я хочу добавить все необработанные файлы к этому индексу до того, как я зафиксирую.
Есть ли способ добавить только индексированные файлы в индекс без их идентификации отдельно? Я не вижу ничего очевидного в документах справки, но, возможно, мне не хватает его?
Спасибо.
Легко с git add -i
. Введите a
(для "add untracked" ), затем *
(для "все" ), затем q
(чтобы выйти), и все готово.
Чтобы сделать это с помощью одной команды: echo -e "a\n*\nq\n"|git add -i
git ls-files -o --exclude-standard
дает невоспроизводимые файлы, поэтому вы можете сделать что-то вроде ниже (или добавить к нему псевдоним):
git add $(git ls-files -o --exclude-standard)
Не совсем то, что вы ищете, но я нашел это весьма полезным:
git add -AN
Будет добавлять все файлы в индекс, но без их содержимого. Файлы, которые были без следа, теперь ведут себя так, как если бы их отслеживали. Их содержимое будет отображаться в git diff
, и вы можете добавить его интерактивно с помощью git add -p
.
Вы можете добавить это в свой файл ~/.gitconfig:
[alias]
add-untracked = !"git status --porcelain | awk '/\\?\\?/{ print $2 }' | xargs git add"
Затем из командной строки просто запустите:
git add-untracked
Люди предложили вывести вывод git ls-files
в git add
, но это произойдет в случаях, когда есть имена файлов, содержащие пробелы или символы глобуса, такие как *
.
Безопасный способ:
git ls-files -o --exclude-standard -z | xargs -0 git add
где -z
сообщает git использовать терминаторы строк \0
, а -0
сообщает xargs то же самое. Единственным недостатком такого подхода является то, что параметр -0
нестандартен, поэтому его поддерживают только некоторые версии xargs
.
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
Я попробовал это, и это сработало:
git stash && git add . && git stash pop
git stash
только поместит все измененные отслеживаемые файлы в отдельный стек, затем оставленные файлы останутся неотслеживаемыми. Затем, делая git add.
установит все файлы без отслеживания, как требуется. В конце концов, чтобы вернуть все измененные файлы из стека, выполнив git stash pop
Если у вас тысячи незатрещенных файлов (тьфу, не спрашивайте), то git add -i
не будет работать при добавлении *
. Вы получите сообщение об ошибке Argument list too long
.
Если вы также находитесь в Windows (не спрашивайте # 2:-) и вам нужно использовать PowerShell для добавления всех невоспроизводимых файлов, вы можете использовать эту команду:
git ls-files -o --exclude-standard | select | foreach { git add $_ }
Здесь много хороших советов, но внутри 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, где у вас есть существительные глагола.
мерзавец добавить. (добавьте все файлы в этот каталог)
git add -all (добавить все файлы во все каталоги)
git add -N может быть полезен для перечисления, какие из них будут позже...
Чтобы добавить все необработанные файлы 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