9 ответов:
этот ответ относится только к git версии 1.x. Для Git версии 2.х, см. другие ответы.
резюме:
git add -Aэтапы все изменения
git add .этапы новые файлы и модификации, без удалений
git add -uэтапы модификации и удаления,без новых файлы
деталь:
git add -Aэквивалентноgit add .; git add -u.важный момент, о
git add .заключается в том, что он смотрит на рабочее дерево и добавляет все эти пути к поэтапным изменениям, если они либо изменены, либо являются новыми и не игнорируются, он не выполняет никаких действий "rm".
git add -uсмотрит на все уже отслеживаемые файлы и этапы изменения этих файлов, если они отличаются или если они были удалены. Он не добавляет никаких новых файлов, он только вносит изменения в уже отслеженные файлы.
git add -A- это удобный ярлык для выполнения обеих этих.вы можете проверить различия с чем-то вроде этого (обратите внимание, что для Git версии 2.x ваш выход для
git add .git statusбудет быть разные):git init echo Change me > change-me echo Delete me > delete-me git add change-me delete-me git commit -m initial echo OK >> change-me rm delete-me echo Add me > add-me git status # Changed but not updated: # modified: change-me # deleted: delete-me # Untracked files: # add-me git add . git status # Changes to be committed: # new file: add-me # modified: change-me # Changed but not updated: # deleted: delete-me git reset git add -u git status # Changes to be committed: # modified: change-me # deleted: delete-me # Untracked files: # add-me git reset git add -A git status # Changes to be committed: # new file: add-me # modified: change-me # deleted: delete-me
Вот таблица для быстрого понимания:
Git Версия 1.x:
Git Версия 2.x:
флаги длинной формы:
git add -Aэквивалентноgit add --allgit add -uэквивалентноgit add --updateчитайте далее:
С Git 2.0,
git add -Aпо умолчанию:git add .равнаgit add -A ..
git add <path>это то же самое, что "git add -A <path>" сейчас, так что "git add dir/" заметит пути, которые вы удалили из каталога и запишите удаление.
В старых версиях Git,"git add <path>" используется для игнорирования удалений.вы можете сказать:"
git add --ignore-removal <path>" to добавить только добавленные или измененные пути в<path>, если вы действительно хотите к.
git addкакgit add :/( добавить все из верхней папки git repo).
Обратите внимание, что git 2.7 (Nov. 2015) позволит вам добавить папку с именем ":"!
Смотрите совершить 29abb33 (25 окт 2015) by Junio C Hamano (gitster).
отметим, что запуск git 2.0 (Q1 или Q2 2014), когда речь идет о
git add .(текущий путь в рабочем дереве), вы должны использовать '.в другойgit addкоманд.это значит:
"
git add -A ." эквивалентно "git add .; git add -u ."(обратите внимание на дополнительный'
.наgit add -Aиgit add -u), потому что
git add -Aилиgit add -uбудет работать (начиная только с git 2.0) на все рабочее дерево, и не только на текущем пути.команда работы на все дерево в Git 2.0 для совместимости с "
git commit -a" и других команд. Потому что не будет никакого механизма, чтобы сделать "git add -u" ведут себя как "git add -u .", это важно для тех, кто привык "git add -u"(без pathspec) обновление индекса только для путей в текущем подкаталоге, чтобы начать обучение их пальцы, чтобы явно сказать"git add -u .", когда они имеют в виду, прежде чем в Git 2.0 приходит.предупреждение выдается, когда эти команды выполняются без pathspec и когда у вас есть локальные изменения вне текущего каталога, потому что поведение в Git 2.0 будет отличаться от сегодняшней версии в такой ситуации.
Итак, из приведенных выше инструкций Чарльза, после тестирования моего предлагаемого понимания будет следующим:
# For the next commit $ git add . # add to index only files created/modified and not those deleted $ git add -u # add to index only files deleted/modified and not those created $ git add -A # do both operation at once, add to index all filesэта ссылка также может быть полезна, чтобы понять, в какой ситуации эти команды могут быть применены:удаление удаленных файлов из рабочего каталога Git.
опоздал на вечеринку, но этот вопрос также заслуживает более дистиллированной быстрый ответ.
git add -Aделает оба ниже (так же, как в Git добавить-все)
git add .этапы новые + измененные файлы
git add -uэтапы изменения + удаленные файлы
что изменилось С Git 2.0:
-Aпо умолчанию- старое поведение теперь доступно с
--ignore-removalgit add -uиgit add -Aв подкаталоге без путей в командной строке работают на всем деревеИтак, для git 2 Ответ:
git add .иgit add -A .добавить новые/измененные/удаленные файлы в текущей директорииgit add --ignore-removal .добавляет новые / измененные файлы в текущем каталогеgit add -u .добавляет измененные/удаленные файлы в текущей директории- без запятой, добавьте все файлы в проект независимо от текущего каталога
наконец-то я думаю, что я получаю это, большое спасибо всем вам. Я надеюсь, что это может добавить еще немного ясности.
!The syntax is git add <limiters> <pathspec> ! Aka git add (nil/-u/-A) (nil/./pathspec)ограничители могут быть -u или-A или nil.
Pathspec может быть путь к файлу или точка,'.- чтобы указать текущий каталог.
важные фоновые знания о том, как git 'добавляет'.
- невидимые файлы, те, которые имеют префикс точки, (dotfiles) никогда не распознаются автоматически Git. Они даже не перечислены как 'прекращено'.
- пустые папки никогда не добавляются git. Они даже не указаны как "не отслеженные". (Обходной путь заключается в добавлении пустого файла, возможно невидимого, к отслеживаемым файлам.)
- git status не будет отображать информацию о подпапке, т. е. неотслеженные файлы, если не отслеживается хотя бы один файл в этой подпапке. До этого времени git считает всю папку вне области видимости, а-ля "пустой". В нем нет отслеживаемых элементов.
- указание filespec ='.' (точка), или текущий каталог, не является рекурсивным, если -A также не указан. Точка относится строго к текущему каталогу-она пропускает пути, найденные выше и ниже.
теперь, учитывая это знание, мы можем применить ответы выше.
ограничители следующие.
- -у = --обновление = подмножество отслеживаемых файлов => добавить = Нет; изменение = "да"; "удалить" = да. => если элемент отслеживается.
- - A = --all (нет такого -a, который дает синтаксическую ошибку) = надмножество всех неотслеживаемых / отслеживаемых файлов, если только в Git эквивалентность товара признается, в Git добавить -это будет найти его и добавить его.
pathspec выглядит следующим образом.
- в Git
- однако, в v2. 0, операция может быть ограничена текущим путем: просто добавьте явный суффикс точки (который также действителен в Git
git add -A .
git add -u .В заключение, моя политика ;
- 1.Убедитесь, что любые куски/файлы, которые будут добавлены, учитываются в статусе git.
- 1A. если какие-либо элементы отсутствуют, из-за невидимых файлов/папок, добавьте их отдельно.
- 2.Есть хороший пример, так что обычно только файлы проценты не отслеживаются и / или не распознаются.
- 3.С верхнего уровня РЕПО, "git add-A", чтобы добавить все элементы. Это работает во всех версиях git.
- 4.При необходимости удалите все нужные элементы из индекса.
- 6.Если есть большая ошибка, сделайте "git reset", чтобы полностью очистить индекс.
git add .равнаgit add -A .добавляет файлы в индекс только из текущих и дочерних папок.
git add -Aдобавляет файлы в индекс из всех папок в рабочее дерево.С. П.: информация относится к Git 2.0.
на Git 2.x:
если вы находитесь непосредственно в рабочий каталог, потом
git add -Aиgit add .Работа без разницы.если вы находитесь в любой подкаталог рабочий каталог,
git add -Aдобавит все файлы из всего рабочий каталог иgit add .добавить файлы из своего текущей директории.и вот все.


Comments