Удалить файл из хранилища, но сохранить его локально

369

У меня есть папка, которую я хотел бы удалить в своем удаленном хранилище. Я хотел бы удалить его, но сохранить папку на моем компьютере

Родриго Соуза
источник
Пожалуйста, посмотрите на предложенные связанные вопросы, когда вы пишете свой - дубликат, вероятно, был одним из первых двух.
Каскабель
Еще один дубликат: stackoverflow.com/questions/1273108/…
Каскабель

Ответы:

638
git rm --cached -r somedir

Постановит удаление каталога, но ничего не коснется на диске. Это работает также для файла, например:

git rm --cached somefile.ext

После этого вы можете захотеть добавить somedir/или somefile.extв свой .gitignoreфайл, чтобы git не пытался добавить его обратно.

jamessan
источник
25
А затем добавьте путь к .gitignore, чтобы git не пытался заставить вас добавить его позже.
grossvogel
3
Приведет ли это к тому, что (файлы в) каталоге будут удалены при его извлечении с пульта?
bstpierre
Не когда он тянет; файлы останутся удаленными локально во время процесса автоматического объединения. После этого нажатие приведет к удалению файлов на стороне сервера.
Уолтер Мундт
7
Что произойдет, если у меня будет третий пульт? Будут ли соответствующие файлы удалены в будущем? Я спрашиваю, потому что я чувствую, что это довольно распространенный вариант использования, то есть проверить некоторые файлы в репозитории, позже понять, что они расходятся между удаленными, по уважительной причине, и никогда не должен был быть в репо в первую очередь, хочу чтобы решить эту проблему, оставив все локальные проверки точно такими же, как они есть, но удалив файлы из хранилища.
Бобби Джек,
6
Для отдельных файлов вы можете сделатьgit rm --cached path/to/file
Трэвис Ридер
3

Я бы просто:

  • Переместите папку из рабочего дерева
  • git rm папка, передайте изменения
  • Добавить в .gitignore(или .git/info/excludes), принять изменения
  • Переместить папку назад
Джефф
источник
8
это не хорошее решение - что если у вас очень большой каталог?
Иолео
вероятно, нужно использоватьgit rm -r
theUtherSide
1
@loostro просто не перемещайте его на другое блочное устройство. Большинство файловых систем просто обновляют inode файла, а не буквально перемещают весь каталог
648trindade