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


369

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



Пожалуйста, посмотрите на предложенные связанные вопросы, когда вы пишете свой - дубликат, вероятно, был одним из первых двух.
Каскабель


Ответы:


638
git rm --cached -r somedir

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

git rm --cached somefile.ext

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.