Видаліть файл із сховища, але зберігайте його локально


369

У мене є папка, яку я хотів би видалити у своєму віддаленому сховищі. Я хотів би її видалити, але папку зберігайте на своєму комп’ютері



Будь ласка, подивіться на запропоновані відповідні питання, коли ви пишете свої - дублікат, мабуть, був одним із перших двох.
Каскабель

Ще один дублікат: stackoverflow.com/questions/1273108/…
Cascabel

Відповіді:


637
git rm --cached -r somedir

Поетапно буде видалено каталог, але нічого не торкнеться на диску. Це також працює для файлу, наприклад:

git rm --cached somefile.ext

Згодом ви можете додати somedir/або somefile.extу свій .gitignoreфайл, щоб git не намагався додати його назад.


24
А потім додайте шлях до .gitignore, щоб git не намагався змусити вас додати його пізніше.
grossvogel

3
Чи це призведе до (файлів у) видалення каталогу, коли він витягне з пульта?
bstpierre

Не коли він тягне; Файли залишаються видаленими локально під час автоматичного злиття потягу. Після цього натискання призведе до видалення файлів на стороні сервера.
Вальтер Мундт

7
Що станеться, якщо у мене є третій пульт? Чи будуть видалені відповідні файли в майбутньому потягу? Я запитую, тому що я вважаю, що це досить поширений випадок використання, тобто перевірити деякі файли в репо, зрозуміти, що вони пізніше розходяться між віддаленими, з поважної причини, і ніколи не повинен був бути в репо, в першу чергу, хочу щоб вирішити це, зберігаючи всі локальні каси точно так, як вони є, але видаляючи файли з репо.
Боббі Джек

6
Для одиночних файлів ви можете зробитиgit rm --cached path/to/file
Тревіс Редер

3

Я просто:

  • Перемістіть папку зі свого робочого дерева
  • git rm папку, введіть зміни
  • Додати до .gitignore(або .git/info/excludes), здійснити зміну
  • Перемістіть папку назад

8
це не гарне рішення - що робити, якщо у вас дуже великий каталог?
ioleo

Мабуть, потрібно скористатисяgit rm -r
ThetherSide

1
@loostro просто не переміщуйте його на інший блок пристрою. Більшість файлових систем просто оновлюють inode файлу, а не буквально переміщують весь каталог
648trindade
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.