Одна из команд, которые я нахожу невероятно полезной в Git, заключается git add -u
в добавлении в индекс всего, кроме неотслеживаемых файлов. Есть ли обратное этому? В последние несколько месяцев я часто оказывался в положении, когда я в интерактивном режиме добавлял некоторые обновления в индекс, и я хочу добавить все неотслеживаемые файлы в этот индекс перед тем, как зафиксировать.
Есть ли способ добавить в индекс только неотслеживаемые файлы без индивидуальной идентификации? Я не вижу ничего очевидного в справочных документах, но, может быть, мне не хватает этого?
Спасибо.
.gitignore
специально разработано для этой цели, а неgit add -u
.Ответы:
С этим легко
git add -i
. Введитеa
(для «добавить без отслеживания»), затем*
(для «всех»), затемq
(для выхода) и все готово.Чтобы сделать это с помощью одной команды:
echo -e "a\n*\nq\n"|git add -i
источник
echo -e "a\n*\nq\n"|git add -i
Argument list too long
... так близко!git add -i
тогда4
добавить неотслеживаемым, тогда*
для всех потомq
выйтиgit ls-files -o --exclude-standard
дает неотслеживаемые файлы, так что вы можете сделать что-то вроде ниже (или добавить псевдоним к нему):источник
-o, --others
Show other (i.e. untracked) files in the output
Не совсем то, что вы ищете, но я нашел это весьма полезным:
Добавит все файлы в указатель, но без их содержания. Файлы, которые не были отслежены, теперь ведут себя так, как если бы они были отслежены. Их содержимое будет отображаться в
git diff
, и вы можете добавить затем в интерактивном режиме сgit add -p
.источник
git commit -p
просматривать и новые файлы.Вы можете добавить это в ваш файл ~ / .gitconfig:
Затем из командной строки просто запустите:
источник
Люди предложили передать вывод команды
git ls-files
to,git add
но это не получится в тех случаях, когда есть имена файлов, содержащие пробелы или символы глобуса, например*
.Безопасным способом было бы использовать:
где
-z
указывает git использовать\0
терминаторы строки и-0
сообщает xargs то же самое. Единственный недостаток этого подхода заключается в том, что этот-0
вариант нестандартен, поэтомуxargs
его поддерживают только некоторые версии .источник
git ls-files
перечисляет файлы в текущем каталоге. Если вы хотите перечислить неотслеживаемые файлы из любого места в дереве, это может работать лучше:Чтобы добавить все неотслеживаемые файлы в дереве:
источник
Я попробовал это, и это сработало:
git stash
все измененные отслеживаемые файлы будут помещаться только в отдельный стек, а оставшиеся поверх файлов остаются без отслеживания. Затем, выполнивgit add .
все необходимые операции, вы сможете отследить все файлы. В конце концов, чтобы вернуть все измененные файлы из стека, выполнивgit stash pop
источник
Если у вас есть тысячи неотслеживаемых файлов (не спрашивайте),
git add -i
они не будут работать при добавлении*
. Вы получите сообщение об ошибкеArgument list too long
.Если вы также работаете в Windows (не спрашивайте # 2 :-) и вам нужно использовать PowerShell для добавления всех неотслеживаемых файлов, вы можете использовать эту команду:
источник
git ls-files -o --exclude-standard | % { git add $_ }
Здесь много хороших советов, но внутри Powershell я не смог заставить его работать.
Я являюсь разработчиком .NET, и мы в основном все еще используем ОС Windows, так как мы не использовали ядро .Net и кроссплатформенность, поэтому мое повседневное использование Git происходит в среде Windows, где чаще всего используется оболочка Powershell. а не Git Bash.
Чтобы создать псевдонимную функцию для добавления неотслеживаемых файлов в репозиторий Git, можно выполнить следующую процедуру.
Внутри вашего $ профиля файл Powershell (если он отсутствует - вы можете запустить: New-Item $ Profile)
Блокнот $ Профиль
Теперь добавьте этот метод Powershell:
Сохраните файл $ profile и перезагрузите его в Powershell. Затем перезагрузите файл профиля $ с помощью:. $ профиль
Это похоже на исходную команду в * nix средах IMHO.
Поэтому в следующий раз, если вы разработчик, использующий Powershell в Windows против Git-репозитория, и хотите просто включить неотслеживаемые файлы, вы можете запустить:
AddUntracked-Гит
Это следует соглашению Powershell, где у вас есть существительные глагола.
источник
мерзавец добавить. (добавить все файлы в этом каталоге)
git add -all (добавить все файлы во все каталоги)
git add -N может быть полезен для перечисления, какие из них будут позже ...
источник
git add -u
добавит измененные файлы не неотслеживаемыеЧтобы добавить все неотслеживаемые файлы, команда git
Также, если вы хотите получить более подробную информацию о различных доступных опциях, вы можете ввести команду
вместо первой команды вы получите больше опций, включая опцию добавления всех неотслеживаемых файлов, как показано ниже:
источник