Почему я должен сказать git, что я удалил файл? - PullRequest
1 голос
/ 28 июля 2011

Я собираю исторический отчет о разработке в git из сохраненных zip-файлов. Я доволен необходимостью git add . файлов в области подготовки, чтобы выбранные файлы были зафиксированы. Пока все хорошо.

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

Моя проблема с пониманием состоит в том, что я получаю "неустановленные изменения", показывающие (Git Gui) каталог / файлы, которые я удалил несколько коммитов назад. Я понял, что git делает снимок текущих файлов, поэтому там не должно быть никаких удаленных файлов.

Итак, мои последние коммиты содержали копии (в их дереве) этих удаленных файлов? Когда / почему git rm необходимо использовать вместо простого rm (или эквивалент Windows)? Должен ли я просто игнорировать сообщение? есть ли объяснения того, как git обрабатывает конкурирующие механизмы удаления и отслеживания.

Ответы [ 2 ]

4 голосов
/ 28 июля 2011

Если вы просто удаляете с помощью rm и затем фиксируете, это удаление не выполняется, поэтому git просто игнорирует тот факт, что этот файл пропал.

Если вы хотите, чтобы git распознал удаление этого файла и соответственно обновил хранилище, вам нужно git rm файл. В вашем случае git add -A . после удаления старого и разархивирования нового даст вам то, что вы хотите. Он добавляет все добавления, удаления и изменения в область подготовки.

С вашим текущим планом у вас наверняка есть много файлов в хранилище, которые вам не нужны. Лучше всего начать все сначала, используя следующую стратегию.

  1. Создать репо
  2. Распаковать файлы
  3. git add -A .
  4. git commit
  5. Удалить все файлы
  6. Повтор от 2
1 голос
/ 28 июля 2011

Ваше предположение верно - последние коммиты содержали копии этих удаленных файлов.

Попробуйте git add -A ., также выполняется удаление.

Если вы хотите знать, почему ..... потому что именно эта область размещения лучше всего используется: в git есть концепция "области сцены", которая позволяет вам фиксировать только часть вашей модификации - это облегчает расщепление патчей.

...