Usuń plik z repozytorium, ale zachowaj go lokalnie


369

Mam folder, który chciałbym usunąć w moim zdalnym repozytorium. Chciałbym go usunąć, ale zachowaj folder na moim komputerze



Zapoznaj się z sugerowanymi powiązanymi pytaniami podczas pisania - duplikat był prawdopodobnie jednym z pierwszych dwóch.
Cascabel,


Odpowiedzi:


637
git rm --cached -r somedir

Spowoduje usunięcie katalogu, ale niczego nie dotknie na dysku. Działa to również w przypadku pliku, takiego jak:

git rm --cached somefile.ext

Potem możesz chcieć dodać somedir/lub somefile.extdo swojego .gitignorepliku, aby git nie próbował dodać go ponownie.


24
A następnie dodaj ścieżkę do .gitignore, aby git nie próbował zmusić Cię do dodania go później.
Grossvogel,

3
Czy spowoduje to usunięcie (plików w) katalogu, gdy pobierze on ze zdalnego?
bstpierre

Nie, kiedy ciągnie; pliki pozostaną usunięte lokalnie podczas automatycznego procesu scalania ściągania. Następnie wypychanie spowoduje usunięcie plików po stronie serwera.
Walter Mundt,

7
Co się stanie, jeśli mam trzeci pilot? Czy odpowiednie pliki zostaną usunięte w przyszłości? Pytam, ponieważ uważam, że jest to dość powszechny przypadek użycia, tj. Sprawdź niektóre pliki w repozytorium, w późniejszym terminie zdaj sobie sprawę, że różnią się one między pilotami, nie bez powodu i nigdy nie powinny być w repozytorium, chcę aby rozwiązać ten problem, zachowując wszystkie lokalne kasy dokładnie takie, jakie są, ale usuwając pliki z repozytorium.
Bobby Jack

6
W przypadku pojedynczych plików możesz to zrobićgit rm --cached path/to/file
Travis Reeder,

3

Po prostu:

  • Przenieś folder z działającego drzewa
  • git rm folder, zatwierdź zmianę
  • Dodaj do .gitignore(lub .git/info/excludes), zatwierdź zmianę
  • Przenieś folder z powrotem

8
to nie jest dobre rozwiązanie - co jeśli masz bardzo duży katalog?
ioleo

prawdopodobnie trzeba użyćgit rm -r
theUtherSide

1
@loostro po prostu nie przenoś go na inne urządzenie blokowe. Większość systemów plików po prostu zaktualizuje i-węzeł pliku, a nie dosłownie przeniesie cały katalog
648trindade
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.