Когда следует использовать rm, git rm, git rm --cached, git добавить

Я изучаю git, но меня путают разные способы постановки и фиксации файлов. Чтобы обернуть мою голову вокруг этого Im, используя метафору каталогов: рабочий каталог, промежуточный каталог, каталог фиксации.

  • Если я rm файл из моего рабочего каталога, он удаляет его только из моего рабочего каталога. Это правильно?
  • Если я git rm файл из моего рабочего каталога, он удаляет его из всех три справочника. Правильно?
  • Если я git rm --cached файл, он удаляет файл из моего поэтапного и фиксировать каталоги, но оставить его в моем рабочем каталоге?
  • Если у меня есть обновленные, добавленные и удаленные файлы из моего рабочего и сделать git add ., тогда git status показывает поэтапные файлы, которые имеют был добавлен, удален и обновлен. Что происходит, когда я совершаю? Являются ли удаленные файлы удалены из каталога Commit? Если я вернусь к которые позже будут зафиксированы, будут ли эти удаленные файлы появляться?

Любая помощь, чтобы лучше понять эти концепции, будет оценена -thanks!

Ответ 1

Измените свое понимание области промежуточного уровня (также называемого индексом или кешем) и опцией --cached. Документация для git rm утверждает

--cached

Используйте этот параметр, чтобы отключить и удалить пути только из индекса. Файлы рабочих деревьев, независимо от того, модифицированы они или нет, будут оставлены в покое.

Запуск списка приводит к

  • rm file - удалять файл только из рабочего каталога
  • git rm - удалить файл из рабочего каталога и из промежуточной области, но еще не включен в историю (репозиторий, "каталог фиксации" )
  • git rm --cached - удалить из промежуточной области, но ни рабочий каталог, ни история
  • git add . при наличии модификаций, новых файлов и удаленных файлов - git будет записывать изменения и новые неузнанные файлы в кеше. (git add будет вести себя по-разному с определенными опциями.)

Опция --cached для различных команд git заставляет их работать с индексом или, по крайней мере, по отношению к индексу.

git add и git rm принимают изменения из рабочего каталога в индекс или кеш. Подумайте об этих командах как о том, как создать свою следующую команду за кусок за раз.

После того, как вы довольны тем, что в индексе, переместите изменения из индекса в репозиторий с помощью git commit.

В большинстве случаев вам нужна простая последовательность git rm file, за которой следует git commit, чтобы остановить файл отслеживания в текущей точке вашей истории.