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

256

Есть ли способ добавить все файлы, независимо от того, что вы делаете с ними, будь они удалены, не отслежены и т. Д.? как для коммита. Я просто не хочу иметь git addили git rmвсе свои файлы каждый раз, когда я фиксирую, особенно когда я работаю над большим продуктом.

INSANENEIVIESIS
источник

Ответы:

307

Пытаться:

git add -A

Предупреждение: Начиная с git 2.0 (середина 2013 г.), это всегда будет размещать файлы во всем рабочем дереве .
Если вы хотите разместить файлы под текущим путем вашего рабочего дерева, вам нужно использовать:

git add -A .

Также см .: Разница git add -Aиgit add .

Kilanash
источник
это не сработало для меня ... как я могу показать мой терминал ввода-вывода в этом обсуждении? скопировать и вставить мой вывод терминала как ответ на это обсуждение?
Ракиб
вот проблема, с которой я сталкиваюсь - stackoverflow.com/q/7726131/636762 - пожалуйста, помогите мне в этом, пожалуйста
Rakib
Это также может не работать, если ваша версия git старая. Я запускал скрипт на сервере, на котором работал git 1.5.2.5. git add -A не работал. Из скрипта сообщения об ошибке не сообщалось. Только из командной строки я обнаружил, что -A не был допустимым вариантом для добавления.
одноименный
но зачем мне добавлять файлы каждый раз, когда я хочу сделать коммит !? Каждый раз, когда я вносил изменения в файлы, мне нужно было их добавить ...
Frade
3
Так работает Git. Вы должны добавить изменения в свою область подготовки, прежде чем совершить это. Например, вы можете добавить в коммит только несколько файлов и предоставить для них комментарии, а не все файлы постоянно. Вот удобное объяснение того, что это делает и почему: gitready.com/beginner/2009/01/18/the-staging-area.html
Kilanash
75

Пытаться

git add -u

Опция " u" означает обновление. Это обновит репо и фактически удалит файлы из репо, которые вы удалили в своей локальной копии.

git add -u [filename]

чтобы удалить только один файл. После нажатия файл больше не будет в репо.

С другой стороны,

git add -A .

эквивалентно

git add .

git add -u .

Обратите внимание на дополнительные '.' на git add -Aиgit add -u


Предупреждение: Начиная с git 2.0 (середина 2013 г.), это всегда будет размещать файлы во всем рабочем дереве .
Если вы хотите разместить файлы под текущим путем вашего рабочего дерева, вам нужно использовать:

git add -A .

Также см .: Разница git add -Aиgit add .

Мэтт Кнайзер
источник
42

Следующий ответ относится только к Git версии 1.x, но к Git версии 2.x.

Вы хотите git add -A:

git add -A этапы Все;

git add . этапы новые и модифицированные, без удаления;

git add -u Этапы изменены и удалены, без новых.

thebr0ken
источник
Обратите внимание, что вышесказанное относится только к Git 1.x. Для git версии 2.x git add -Aэквивалентно git add .. Смотрите здесь для дальнейших обсуждений.
jdhao
27

git add --all или git add -A или git add -A . Этапы Все

git add . Этапы новые и модифицированные, но без удаления

git add -u Этапы изменены и удалены, но без новых

git commit -aЗначит git add -uаgit commit -m "message"

После написания этой команды выполните следующие действия: -

  1. Нажмите i
  2. напишите ваше сообщение
  3. Нажмите esc
  4. Нажмите :wq
  5. Нажмите enter

git add <list of files> добавить определенный файл

git add *.txt добавить все текстовые файлы в текущем каталоге

git add docs/*/txt добавить все текстовые файлы в каталог документов

git add docs/ добавить все файлы в каталог документов

git add "*.txt"или git add '*.txt'добавьте все файлы во всем проекте

akshay_rahar
источник
12

Я не уверен, что он будет добавлять удаленные файлы, но git add .из корня будут добавлять все неотслеживаемые файлы.

bcherry
источник
см. мой ответ о том, как добавить удаленные файлы
Мэтт Кнайзер
5

Это моя альтернатива (в любом bash):

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

Сбросить

$ git status -s|awk '{ print $2 }'|xargs git reset HEAD
Джакомо Тесио
источник
5

Я создал проект G2, дружественную среду для git lover из командной строки.
Пожалуйста, получите проект от github - G2 https://github.com/orefalo/g2

Он имеет множество удобных команд, одна из которых именно то, что вы ищете: freeze

freeze - заморозить все файлы в хранилище (добавления, удаления, модификации) в области подготовки, таким образом, подготовив этот контент для включения в следующую фиксацию. Также примите определенный путь в качестве параметра

Оливье Рефало
источник
5

Для более новой версии Git.

Я пытался, git add -Aи это подсказало,

предупреждение: поведение 'git add --all (или -A)' без аргумента пути из подкаталога дерева изменится в Git 2.0 и больше не должно использоваться. Чтобы добавить контент для всего дерева, запустите:

git add --all: / (или git add -A: /)

Чтобы ограничить команду текущим каталогом, выполните:

мерзавец добавить - все. (или Git добавить -A.)

С текущей версией Git команда ограничена текущим каталогом.


Затем я попробовал ниже, который работал .

git add --all :/
Параг Тяги
источник
3

Из документации Git, начиная с версии 2.0:

Чтобы добавить контент для всего дерева, запустите:

git add --all :/

или

git add -A :/

Чтобы ограничить команду текущим каталогом, выполните:

git add --all .

или

git add -A .
HOKBONG
источник
2

Я использую следующую строку, чтобы добавить для подготовки все измененные и вновь созданные файлы, за исключением тех, которые перечислены в .gitignore:

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

(синтаксис $ () для оболочки bash). Я полагаю, что параметр командной строки -mod должен также добавить удаленные файлы ... Или, если у вас есть имена файлов со встроенными пробелами, следующий однострочник должен сделать трюк:

git ls-files -z --deleted --modified --others --exclude-standard | xargs -0 git add
Маурицио Лоретти
источник