Мерзавец добавить: новый против измененного против удаленного
Я пытался разобраться с "git add", особенно в отношении того, как он ведет себя для новых и модифицированных и удаленных файлов.
Я просмотрел различные руководства и учебные пособия в Интернете, но многое из того, что там сейчас, кажется, устарело, особенно в том, что касается удаления удаленных файлов (удаления из индекса), поскольку кажется, что поведение по умолчанию из мерзавца изменилось недавно (или, по крайней мере, совсем недавно, когда речь шла о статье).
Даже документация по адресу http://git-scm.com/docs/git-add меня немного смутила, или я неуверен в том, что есть, а что нет, с "git add".
Итак, давайте рассмотрим основную команду:
$ git add <pathspec>
Насколько я понимаю из "официальной" документации, то, где pathspec является именем каталога (например, "dir" или "dir/subdir" или даже "."), Это приводит к тому, что все новые файлы и измененные файлы и удаленные файлы в этом каталоге постановка (т.е. удаленные локальные файлы также будут удалены в удаленном репо).
Но там, где pathspec - это файл или набор файлов (например, "doc.txt" или "*.txt" или "dir/*. Js"), постановка производится только для новых и измененных файлов, а не для удаленных файлов.
Это верно? Это то, как git выбирает между двумя режимами, предполагая, что никакие другие флаги не используются?
И тогда явными флагами являются -A для создания нового, измененного и удаленного. Или -u, чтобы этап изменен и удален (но не новый). Или --no-all для создания нового и измененного (но не удаленного).
Это справедливое резюме, или я неправильно понял? Документы ссылаются на ведущее имя каталога, поэтому, может быть, правило заключается в том, что 'dir/*. Txt' будет помещать удаленные файлы?
Было бы полезно, если бы кто-то знал, мог бы объяснить, объясните поведение для каждого из следующих примеров, просто указав что-то вроде "новый: да, измененный: да, удаленный: нет":
$ git add .
$ git add dir
$ git add dir/subdir
$ git add dir/*.txt
$ git add *.txt
$ git add file.txt
$ git add ./file.txt
$ git add dir/file.txt
Например:
$ git add . (new: yes, modified: yes, deleted: yes)
Большое спасибо.