Wie entferne ich die Versionsverfolgung aus einem von git geklonten Projekt?


685

Ich möchte die gesamte Versionsverfolgung aus dem Verzeichnis eines Projekts entfernen.

Was ist die richtige Methode, um dies zu tun?

Kann ich einen Shell-Befehl ausführen wie:

rm -rf .git

aus meinem Projektverzeichnis oder gibt es eine Möglichkeit, dies als Git-Befehl zu tun?

Ich habe dieses Projekt verwendet, um Git zu lernen und festzustellen, dass ich zu Beginn des Projekts einige Fehler mit verschobenen, umbenannten und gelöschten Dateien gemacht habe. Ich möchte alle Git-Tracking entfernen und neu beginnen mit git init.


1
Betrachten Sie Git-Archiv .
Martin v. Löwis

2
Abhängig davon, wie schlimm die Fehler waren, möchten Sie möglicherweise eine interaktive Neuauflage des Ganzen durchführen und einfach eine Menge Commits frühzeitig zusammenfassen, aber die neuere gute Geschichte speichern.
Cascabel

6
für Windows-Benutzer:rd /s /q .git
Soorena

Antworten:


686

Alle Daten, die Git für Informationen verwendet, werden in gespeichert .git/, daher sollte das Entfernen einwandfrei funktionieren. Stellen Sie natürlich sicher, dass Ihre Arbeitskopie genau in dem Zustand ist, den Sie möchten, da alles andere verloren geht. .gitOrdner ist ausgeblendet, stellen Sie also sicher, dass Sie die Show hidden files, folders and disksOption aktivieren.

Von dort aus können Sie git initein neues Repository erstellen.


1
Ich bin mir sicher, dass meine Unterordner kein eigenes verstecktes .git-Verzeichnis haben, aber ich erhalte immer noch das ausgegraute Symbol, wenn ich diese Ordner auf github verschiebe ... kann ich noch etwas versuchen?
Kokodoko

1
Es gibt auch .gitconfig, daher sollten Sie es auch entfernen.
Maximilian Mordig

Betrachten Sie 'code'git rm -r --cached your_folder / Mein Ziel war es, einen verfolgten Git-Ordner in einen untergeordneten Ordner eines anderen verfolgten Git-Ordners zu verwandeln. Der neue Elternteil würde das neue Kind erst erkennen, wenn ich den Cache des untergeordneten Ordners entfernt habe.
Ryan Huebert

419

rm -rf .gitsollte ausreichen. Dadurch werden alle Git-bezogenen Informationen weggeblasen.


1
Wenn Sie einige cannot unlink Permission deniedin Windows erhalten, können Sie den explorerProzess im Task-Manager beenden, den rm -rf .gitExplorer erneut ausführen und den Explorer danach erneut öffnen. Für mich geht das!
Michael

10
Wenn Sie Git Bashunter Windows haben, wird es auch funktionieren.
Viral

1
was tut -rfbedeuten?
Nilon

13
-rbedeutet "rekursiv", löscht also den gesamten Inhalt des Ordners, anstatt Fehler zu machen, da der Ordner nicht leer ist, und -ffragt nicht, ob Sie wirklich sicher sind, dass Inhalte gelöscht werden .
Lily Ballard

1
@Lucky_girl Es werden alle Git-Status von Ihrer Kasse entfernt. Keine Zweige, keine Geschichte, keine Fernbedienungen, überhaupt nichts. All das Zeug wird im .gitVerzeichnis gespeichert . Ohne sie haben Sie buchstäblich kein Git-Repository mehr.
Lily Ballard

96

Zusätzlich zu den folgenden Schritten möchten Sie möglicherweise auch die .gitignore-Datei entfernen.

  • Ziehen Sie in Betracht, die Gitignore-Datei zu entfernen, wenn Sie Spuren von Git in Ihrem Projekt entfernen möchten.

  • ** Ziehen Sie in Betracht, die .gitignore-Datei zu verlassen, wenn Sie Git jemals wieder in das Projekt integrieren möchten.

Einige Frameworks erstellen möglicherweise automatisch die .gitignore-Datei, sodass Sie sie möglicherweise verlassen möchten.


Linux-, Mac- oder Unix-basierte Betriebssysteme

Öffnen Sie ein Terminal und navigieren Sie zum Verzeichnis Ihres Projekts, dh - cd path_to_your_project.

Führen Sie diesen Befehl aus:

rm -rf .git*

Dadurch werden das Git-Tracking und die Metadaten aus Ihrem Projekt entfernt. Wenn Sie die Metadaten (z. B. .gitignore und .gitkeep) beibehalten möchten, können Sie nur das Tracking durch Ausführen löschen rm -rf .git.


Windows

Verwenden der Eingabeaufforderung

Der Befehl rmdiroderrd löscht / entfernt keine versteckten Dateien oder Ordner in dem von Ihnen angegebenen Verzeichnis. Verwenden Sie daher den delBefehl, um sicherzustellen, dass alle Dateien aus dem .gitOrdner entfernt werden.

  1. Öffnen Sie die Eingabeaufforderung

    1. Klicken Sie entweder Startdann Runoder Windows-Schlüsseldrücken Sie die Taste und rgleichzeitig.

    2. Geben Sie ein cmdund drücken Sie die Eingabetaste

  2. Navigieren Sie zum Projektverzeichnis, dh - cd path_to_your_project

  1. Führen Sie diese Befehle aus

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

    2. rmdir .git

Der erste Befehl löscht alle Dateien und Ordner innerhalb des .gitOrdners. Der zweite entfernt den .gitOrdner selbst.

Keine Eingabeaufforderung

  1. Öffnen Sie den Datei-Explorer und navigieren Sie zu Ihrem Projekt

  2. Versteckte Dateien und Ordner anzeigen - eine visuelle Anleitung finden Sie in diesem Artikel

    1. Wählen Sie im Ansichtsmenü der Symbolleiste die Option Options

    2. Advanced SettingsSuchen Sie im Abschnitt Hidden files and Foldersunter der Files and FoldersListe und wählen SieShow hidden files and folders

  3. Schließen Sie das Optionsmenü und Sie sollten alle versteckten Ordner und Dateien einschließlich des .gitOrdners sehen.

    Löschen Sie den .gitOrdner löschen .gitignoreDatei ** (siehe Hinweis am Anfang der Antwort)


1
rmdir .gitfunktioniert nicht, weil sich Ordner darunter befinden.
Dale

Dale, sieh dir die Zeile unter an rmdir .git. Es wird erläutert, dass mit dem obigen Befehl rmdir .gitalle Dateien und Ordner im Ordner .git entfernt werden, bevor der rmdirBefehl den Ordner selbst entfernt.
Matt C

1
Sie könnten es genauso gut tun rd /s /q .git, was den Ordner und alles darin wegblasen wird
Greg

Für Windows habe rmdir /S .gitich die Arbeit erledigt. Danke dafür.
Eder Luis Jorge

70

Es ist keine kluge Wahl, alles .git*von Hand zu verschieben, insbesondere wenn diese .gitDateien genau wie in meinem Zustand in Unterordnern versteckt sind: Wenn ich Skeleton Zend 2 von Composer + Git installiert habe, werden eine ganze Reihe von .gitDateien in Ordnern und Unterordnern erstellt Ordner.

Ich habe rm -rf .gitmeine GitHub-Shell ausprobiert , aber die Shell kann den Parameter -rfvon Remove-Item nicht erkennen .

www.montanaflynn.me führt den folgenden Shell-Befehl ein , um alle .gitDateien einmalig rekursiv zu entfernen ! Es funktioniert wirklich!

find . | grep "\.git/" | xargs rm -rf

5
"Ich habe 'rm -rf .git' auf meiner Github-Shell ausprobiert, aber die Shell kann den Parameter '-rf' von Remove-Item nicht erkennen." - Das liegt daran, dass rmes sich um einen PowerShell-Alias ​​für handelt remove-item. Und -rfist * nix Shell rmArgumente. Verwenden Sie rm -recursive -forcestattdessen PowerShell .
KFL

14
GEFÄHRLICH! grep .gitwürde Dateien wie legit.gifoder anithing mit "git" in der Mitte des Dateinamens abgleichen! Bitte entfernen oder bearbeiten Sie die Antwort !!!
Pamatt

4
Update nur für Git-Verzeichnisse: find. | grep "\ .git /"
Andrew

3
Immer noch nicht sicher genug: Dadurch werden Dateien und Verzeichnisse abgefangen, die mit enden .git. Es sollte sein grep "^\.git/"; Noch besser (und schneller) wäre es, beim findAufruf nach Namen zu filtern : find . -name .git.
Pvgoran

Führen Sie folgende Befehle aus: find -name .git | xargs rm -rfund find -name .gitignore | xargs rm -rf.
Entwickler Marius Žilėnas

14

Ich arbeite mit einer Linux-Umgebung. Ich habe alle Git-Dateien und Ordner rekursiv entfernt:

rm -rf .git

rm -rf .gitkeep

9

In einer Windows-Umgebung können Sie Git-Tracking aus dem Verzeichnis eines Projekts entfernen, indem Sie einfach Folgendes eingeben.

rd .git /S/Q

7

Aus dem Stammordner ausführen

find . | grep .git

Überprüfen Sie die Übereinstimmungen und stellen Sie sicher, dass sie nur die Dateien enthalten, die Sie löschen und entsprechend anpassen möchten. Sobald Sie zufrieden sind, laufen Sie

find . | grep .git | xargs rm -rf


5

Der einfachste Weg, um dieses Problem zu lösen, ist die Verwendung einer Befehlszeile. rm -R .git/Geben Sie diesen Befehl ein und geben Sie dann ein ... ODER rm -rf .git/drücken Sie die Eingabetaste ...


2

Windows-Eingabeaufforderung (cmd) Benutzer:

Sie können '.git' rekursiv im Quellprojektordner mit einem einzeiligen Befehl löschen.

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.