Jak usunąć śledzenie wersji z projektu sklonowanego z git?

685

Chcę usunąć wszystkie śledzenie wersji z katalogu projektu.

Jaka jest poprawna metoda, aby to zrobić?

Czy mogę wykonać polecenie powłoki, takie jak:

rm -rf .git

z mojego katalogu projektów lub czy można to zrobić jako polecenie Git?

Użyłem tego projektu do nauki Gita i zdałem sobie sprawę, że popełniłem kilka błędów na początku projektu, przenosząc, zmieniając nazwy i usuwając pliki. Chciałbym usunąć wszystkie śledzenie Git i zacząć od nowa git init.

daustin777
źródło
1
Rozważ git-archive .
Martin v. Löwis
2
W zależności od tego, jak poważne były błędy, możesz chcieć zrobić interaktywną bazę dla całej sprawy i po prostu zmiażdżyć mnóstwo zmian na wczesnym etapie, ale zachowaj nowszą dobrą historię.
Cascabel
6
dla użytkowników systemu Windows:rd /s /q .git
Soorena

Odpowiedzi:

686

Wszystkie dane używane przez Git do przechowywania informacji są przechowywane .git/, więc usunięcie powinno działać dobrze. Oczywiście upewnij się, że kopia robocza jest w dokładnie takim stanie, w jakim chcesz, ponieważ wszystko inne zostanie utracone. .gitfolder jest ukryty, więc włącz Show hidden files, folders and disksopcję.

Stamtąd możesz uruchomić, git initaby utworzyć nowe repozytorium.

bobDevil
źródło
1
Jestem pewien, że moje podfoldery nie mają własnego ukrytego katalogu .git, ale mimo to popycham tę szarą ikonę podczas wypychania tych folderów do github ... czy jest coś jeszcze, co mogę wypróbować?
Kokodoko
1
Istnieje również .gitconfig, więc powinieneś go również usunąć.
Maximilian Mordig
rozważ 'code'git rm -r - zbuforował twój_folder / moim celem było przekształcenie śledzonego folderu git w folder potomny innego śledzonego folderu git. Nowy rodzic nie rozpozna nowego dziecka, dopóki nie usunę pamięci podręcznej folderu potomnego.
Ryan Huebert
419

rm -rf .gitpowinno wystarczyć. Spowoduje to usunięcie wszystkich informacji związanych z Git.

Lily Ballard
źródło
1
Jeśli dostaniesz trochę cannot unlink Permission deniedw explorersystemie Windows, możesz zabić proces w menedżerze zadań, ponownie uruchomić rm -rf .giti ponownie otworzyć Eksploratora. mi to pasuje!
Michael
10
Jeśli masz Git Bashna Windowsie, będzie również działać.
Viral
1
co -rfznaczy
nilon
13
-roznacza „rekurencyjny”, więc usunie całą zawartość folderu zamiast go pomyłkowo, ponieważ folder nie jest pusty, i -fsprawi, że nie będzie pytał, czy naprawdę jesteś pewien, czy coś usunąć.
Lily Ballard,
1
@Lucky_girl To usunie cały stan Git z kasy. Bez oddziałów, bez historii, bez pilotów, w ogóle nic. Wszystkie te rzeczy są przechowywane w .gitkatalogu. Bez tego dosłownie nie masz już repozytorium git.
Lily Ballard
96

Oprócz poniższych kroków możesz również usunąć plik .gitignore.

  • Rozważ usunięcie pliku .gitignore, jeśli chcesz usunąć ślady Git w swoim projekcie.

  • ** Zastanów się nad pozostawieniem pliku .gitignore, jeśli kiedykolwiek będziesz chciał ponownie włączyć Git do projektu.

Niektóre frameworki mogą automatycznie generować plik .gitignore, więc możesz go zostawić.


Systemy operacyjne oparte na Linux, Mac lub Unix

Otwórz terminal i przejdź do katalogu swojego projektu, tj cd path_to_your_project. - .

Uruchom to polecenie:

rm -rf .git*

Spowoduje to usunięcie śledzenia i metadanych Git z twojego projektu. Jeśli chcesz zachować metadane (takie jak .gitignore i .gitkeep), możesz usunąć tylko śledzenie, uruchamiając rm -rf .git.


Windows

Za pomocą wiersza polecenia

rmdirLub rdkomenda nie usunie / usunąć ukryte pliki lub foldery w katalogu można określić, więc należy użyć delpolecenia, aby mieć pewność, że wszystkie pliki są usuwane z .gitkatalogu.

  1. Otwórz wiersz polecenia

    1. Kliknij Startwtedy Runlub naciśnij Klawisz Windowsklawisz i rjednocześnie.

    2. Wpisz cmdi naciśnij Enter

  2. Przejdź do katalogu projektu, tj. - cd path_to_your_project

  1. Uruchom te polecenia

    1. del /F /S /Q /A .git

    2. rmdir .git

Pierwsze polecenie usuwa wszystkie pliki i foldery wewnątrz w .gitfolderze. Drugi usuwa .gitsam folder.

Brak wiersza polecenia

  1. Otwórz eksplorator plików i przejdź do swojego projektu

  2. Pokaż ukryte pliki i foldery - zobacz wizualny przewodnik po tym artykule

    1. W menu widoku na pasku narzędzi wybierz Options

    2. W Advanced Settingssekcji znajdź Hidden files and Folderspod Files and Folderslistą i wybierzShow hidden files and folders

  3. Zamknij menu opcji i powinieneś zobaczyć wszystkie ukryte foldery i pliki, w tym .gitfolder.

    Usuń .gitfolder Usuń .gitignoreplik ** (patrz uwaga na górze tej odpowiedzi)

Matt C.
źródło
1
rmdir .gitnie działa, ponieważ są pod nim foldery.
Dale
Dale, sprawdź linię pod rmdir .git. Wyjaśnia, że ​​powyższe polecenie rmdir .gitsłuży do usunięcia wszystkich plików i folderów w folderze .git, zanim rmdirpolecenie to usunie sam folder.
Matt C.
1
równie dobrze możesz to zrobić rd /s /q .git, co zdmuchnie folder i wszystko w nim
Greg
W przypadku systemu Windows rmdir /S .gitpraca została wykonana. Dzięki za to.
Eder Luis Jorge,
70

Nie jest to mądry wybór, aby przenosić wszystko .git*ręcznie, szczególnie gdy .gitpliki te są ukryte w podfolderach, tak jak mój stan: kiedy zainstalowałem Skeleton Zend 2 przez kompozytora + git, istnieje wiele .gitplików utworzonych w folderach i pod- lornetka składana.

Próbowałem rm -rf .gitna mojej powłoce GitHub, ale powłoka nie może rozpoznać parametru -rfRemove-Item.

www.montanaflynn.me wprowadza następujące polecenie powłoki, aby usunąć wszystkie .gitpliki jeden raz, rekurencyjnie! To naprawdę działa!

find . | grep "\.git/" | xargs rm -rf
John Yin
źródło
5
„Próbowałem„ rm -rf .git ”na mojej powłoce Github, ale powłoka nie może rozpoznać parametru„ -rf ”parametru Usuń-element.” - to dlatego, że rmjest aliasem PowerShell remove-item. I argumenty -rfpowłoki * nix rm. W przypadku PowerShell użyj rm -recursive -forcezamiast tego.
KFL
14
NIEBEZPIECZNY! grep .gitdopasuje pliki takie jak legit.giflub anithing z „git” na środku nazwy pliku! Usuń lub edytuj odpowiedź !!!
pamatt
4
Zaktualizuj, aby dopasować tylko w katalogach git: znajdź. | grep "\ .git /"
Andrew
3
Nadal nie jest wystarczająco bezpieczny: przechwytuje pliki i katalogi, które kończą się .git. Powinno być grep "^\.git/"; nawet lepiej (i szybciej) byłoby aby filtrować według nazwy w findinwokacji: find . -name .git.
pvgoran,
Wykonaj następujące polecenia: find -name .git | xargs rm -rfi find -name .gitignore | xargs rm -rf.
Deweloper Marius Žilėnas
14

Pracuję w środowisku Linux. Usunąłem wszystkie pliki i foldery Git w sposób rekurencyjny:

rm -rf .git

rm -rf .gitkeep
Nitya Kumar
źródło
9

W środowisku Windows możesz usunąć śledzenie Git z katalogu projektu, wpisując poniżej.

rd .git /S/Q
Rukshan Dangalla
źródło
7

Z folderu głównego uruchom

find . | grep .git

Przejrzyj dopasowania i potwierdź, że zawierają tylko te pliki, które chcesz usunąć, i dopasuj do potrzeb. Gdy usatysfakcjonowany, biegnij

find . | grep .git | xargs rm -rf

Kamesh Jungi
źródło
5

Najprostszym sposobem rozwiązania tego problemu jest użycie wiersza polecenia. Wpisz to polecenie, a rm -R .git/następnie Enter ... LUB rm -rf .git/Naciśnij Enter ...

Emeka Augustine
źródło
2

Wiersz polecenia systemu Windows (cmd) Użytkownik:

Można rekurencyjnie usunąć plik „.git” w źródłowym folderze projektu za pomocą polecenia w jednej linii.

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
SridharKritha
źródło