Wie entferne ich ein Verzeichnis aus dem Git-Repository?
1233
Ich habe 2 Verzeichnisse in meinem GitHub-Repository. Ich möchte einen von ihnen löschen. Wie kann ich das tun, ohne das gesamte Repository zu löschen und neu zu erstellen?
@ Iarsmans: Ja 6 Dateien. Beide Verzeichnisse sind identisch, außer dass eines in Großbuchstaben und das andere in Kleinbuchstaben geschrieben ist.
Sahat Yalkabov
Antworten:
2323
Entfernen Sie das Verzeichnis aus git und local
Sie können 'master' mit beiden Verzeichnissen auschecken.
git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
Entfernen Sie das Verzeichnis aus Git, aber NICHT lokal
Wie in den Kommentaren erwähnt, möchten Sie dieses Verzeichnis normalerweise aus git entfernen, aber nicht vollständig aus dem Dateisystem (lokal) löschen.
Ich hatte genau die gleiche Situation. Als ich es versuchte git rm -r myFolder, funktionierte es, löschte aber auch alles aus dem Verzeichnis "MyFolder". Musste alles im "MyFolder" -Verzeichnis zurücksetzen und dann festschreiben.
Justin
240
@ Justin Um nur aus Git zu entfernen und das Dateisystem unverändert zu lassen, verwenden Siegit rm -r --cached myFolder
karmakaze
32
Die Fehlermeldung, die ich erhalte, lautet: fatal: pathspec 'Verzeichnis' stimmte nicht mit Dateien überein.
user2441441
3
@ user2441441 Ich hatte diesen Fehler, als ich versuchte, einen Ordner / eine Datei zu entfernen, die überhaupt nicht zum Repo hinzugefügt wurde
lukeatdesignworks
3
git rm -r --cached directory/wird nur aus git verfolgt, aber die Repository-Struktur bleibt erhalten.
Néstor
287
Um Ordner / Verzeichnis nur aus dem Git-Repository und nicht aus dem lokalen zu entfernen, versuchen Sie 3 einfache Befehle.
Schritte zum Ignorieren dieses Ordners bei den nächsten Commits
Um diesen Ordner bei den nächsten Commits zu ignorieren, erstellen Sie eine Datei im Stammverzeichnis mit dem Namen .gitignore
und fügen Sie diesen Ordnernamen ein . Sie können so viele setzen, wie Sie möchten
Sie müssen auch den git rm -r --cached FolderName git commit -m "Ordner aus dem Repository entfernt" auf Ihrem anderen Computer ausführen und dann einen Pull ausführen, um ihn synchron zu halten.
Simon
1
Löscht dies das Verzeichnis von dem Punkt, an dem es bisher zum Repository hinzugefügt wurde? Oder ist es nur, um das Verzeichnis zu entfernen und es wieder in das .git-Repo zu übernehmen?
Alpha_989
1
Großartig! Arbeiten!
BeingCoders
2
Gut erklärt, nette Antwort
Rakshit Shah
1
gut gemacht. Auf meinem Computer funktioniert der dritte Schritt nicht. Aber es funktioniert, wenn es in $ git push geändert wird
Hong
82
Wenn das, was karmakaze gesagt hat, aus irgendeinem Grund nicht funktioniert, können Sie versuchen, das gewünschte Verzeichnis mit oder mit Ihrem Dateisystembrowser (z. B. im Windows-Datei-Explorer) zu löschen. Geben Sie nach dem Löschen des Verzeichnisses den folgenden Befehl ein: git add -A
und dann git commit -m 'deleting directory'
und dann git push origin master.
Wenn Sie die Dateien im Verzeichnis entfernen (mit git rm wie in den anderen Antworten erläutert), ist das Verzeichnis für Git nicht mehr vorhanden. Sie können weder ein leeres Verzeichnis festschreiben noch eines entfernen.
Dies ist anders als bei Subversion, wo Sie explizit müssen svn rm emptyfolder/, und ist im Übrigen der Grund, warum dieman Seite für Git selbst als "der dumme Content-Tracker" bezeichnet.
Derzeit erlaubt das Design des Git-Index (Staging-Bereich) nur das Auflisten von Dateien, und niemand, der kompetent genug ist, um die Änderung vorzunehmen, um leere Verzeichnisse zuzulassen, hat sich genug um diese Situation gekümmert, um Abhilfe zu schaffen.
Verzeichnisse werden automatisch hinzugefügt, wenn Dateien hinzugefügt werden. Das heißt, Verzeichnisse müssen niemals zum Repository hinzugefügt werden und werden nicht einzeln verfolgt.
Sie können " git add <dir>" sagen und es werden dort Dateien hinzugefügt.
Wenn Sie wirklich ein Verzeichnis benötigen, das an den Kassen vorhanden sein soll, sollten Sie eine Datei darin erstellen. .gitignore funktioniert gut für diesen Zweck; Sie können es leer lassen oder die Namen der Dateien eingeben, die voraussichtlich im Verzeichnis angezeigt werden.
Ich wollte ein leeres Verzeichnis (Ordner) löschen, das ich erstellt habe. Git kann es nicht löschen. Nach einigen Recherchen habe ich erfahren, dass Git keine leeren Verzeichnisse verfolgt. Wenn Sie ein leeres Verzeichnis in Ihrem Arbeitsbaum haben, sollten Sie es einfach mit entfernen
Sie können Attlasian Source Tree (Windows) verwenden ( https://www.atlassian.com/software/sourcetree/overview ). Wählen Sie einfach die Dateien aus dem Baum aus und klicken Sie oben auf "Entfernen". Dateien werden aus dem lokalen Repository und der lokalen Git-Datenbank gelöscht. Dann festschreiben, dann drücken.
Das mache ich auch. Das Lernen von Git-Befehlen ist jedoch sehr einfach.
Micah Montoya
1
Einer meiner Kollegen schlug BFG Repo-Cleaner vor, was ich für mächtig halte. Es werden nicht nur unerwünschte Daten gelöscht, sondern auch Ihr Repository von verwandten Commit-Informationen befreit.
Aber jetzt ist Git dieses neue Verzeichnis nicht bekannt, da Git die Dateien und nicht die Verzeichnisse DIRECTORY verfolgt
git status
Git ist sich der vorgenommenen Änderung nicht bewusst, daher fügen wir versteckte .keepDateien hinzu, um Git auf diese neue Änderung aufmerksam zu machen.
touch /YOUR-directory/.keep
Nun, wenn Sie schlagen git status Git über die Änderungen informiert.
Und wenn Sie das Verzeichnis löschen möchten, sollten Sie diesen Befehl verwenden.
rm -r <YOUR-DIRECTORY>
Wenn Sie dies mit überprüfen git status, sehen Sie, dass das Verzeichnis entfernt wurde.
Antworten:
Entfernen Sie das Verzeichnis aus git und local
Sie können 'master' mit beiden Verzeichnissen auschecken.
Entfernen Sie das Verzeichnis aus Git, aber NICHT lokal
Wie in den Kommentaren erwähnt, möchten Sie dieses Verzeichnis normalerweise aus git entfernen, aber nicht vollständig aus dem Dateisystem (lokal) löschen.
In diesem Fall verwenden Sie:
quelle
git rm -r myFolder
, funktionierte es, löschte aber auch alles aus dem Verzeichnis "MyFolder". Musste alles im "MyFolder" -Verzeichnis zurücksetzen und dann festschreiben.git rm -r --cached myFolder
git rm -r --cached directory/
wird nur aus git verfolgt, aber die Repository-Struktur bleibt erhalten.Um Ordner / Verzeichnis nur aus dem Git-Repository und nicht aus dem lokalen zu entfernen, versuchen Sie 3 einfache Befehle.
Schritte zum Entfernen des Verzeichnisses
Schritte zum Ignorieren dieses Ordners bei den nächsten Commits
Die .gitignore- Datei sieht folgendermaßen aus
quelle
Wenn das, was karmakaze gesagt hat, aus irgendeinem Grund nicht funktioniert, können Sie versuchen, das gewünschte Verzeichnis mit oder mit Ihrem Dateisystembrowser (z. B. im Windows-Datei-Explorer) zu löschen. Geben Sie nach dem Löschen des Verzeichnisses den folgenden Befehl ein:
git add -A
und dann
git commit -m 'deleting directory'
und dann
git push origin master
.quelle
Sie können dies versuchen:
git rm -rf <directory_name>
Dadurch wird das Löschen des Verzeichnisses erzwungen.
quelle
Wenn Sie die Dateien im Verzeichnis entfernen (mit
git rm
wie in den anderen Antworten erläutert), ist das Verzeichnis für Git nicht mehr vorhanden. Sie können weder ein leeres Verzeichnis festschreiben noch eines entfernen.Dies ist anders als bei Subversion, wo Sie explizit müssen
svn rm emptyfolder/
, und ist im Übrigen der Grund, warum dieman
Seite für Git selbst als "der dumme Content-Tracker" bezeichnet.Eine Antwort auf "Wie füge ich einem Git-Repository ein leeres Verzeichnis hinzu?" Verlinkt auf die FAQ zu diesem Thema :
quelle
Ich hatte den Ordner bereits zuvor festgeschrieben und möchte das Verzeichnis auch im Verlauf entfernen.
Ich habe folgendes gemacht:
Ordner hinzufügen zu
.gitignore
:Von allen Commits entfernen:
Entfernen Sie die Refs aus den alten Commits:
Stellen Sie sicher, dass alle alten Refs vollständig entfernt wurden
Führen Sie eine Speicherbereinigung durch
Pushen Sie Änderungen in das Online-Repository:
Sie sind hier fertig.
Sie können jedoch Folgendes tun, um alle Änderungen auf alle Zweige mit zu übertragen: Aber seien Sie vorsichtig mit diesem Befehl!
Danach wurde der Ordner von git entfernt, aber nicht von der lokalen Festplatte gelöscht.
quelle
zum Löschen leerer Ordner
Ich wollte ein leeres Verzeichnis (Ordner) löschen, das ich erstellt habe. Git kann es nicht löschen. Nach einigen Recherchen habe ich erfahren, dass Git keine leeren Verzeichnisse verfolgt. Wenn Sie ein leeres Verzeichnis in Ihrem Arbeitsbaum haben, sollten Sie es einfach mit entfernen
Es ist nicht erforderlich, Git einzubeziehen.
quelle
Gehen Sie zu Ihrem Git-Verzeichnis und geben Sie den folgenden Befehl ein: rm -rf < Verzeichnisname >
Nach dem Löschen des Verzeichnisses werden die Änderungen festgeschrieben durch: git commit -m "Ihre Festschreibungsnachricht"
Dann drücken Sie einfach die Änderungen in das entfernte GIT-Verzeichnis: git push origin < Zweigname >
quelle
Sie können den Ordner lokal löschen und dann wie folgt drücken:
quelle
Normalerweise
git add --all
entferne ich Dateien / Ordner aus Remote-Repositorysmaster
kann durch einen anderen Zweig des Repositorys ersetzt werden.quelle
Sie können Attlasian Source Tree (Windows) verwenden ( https://www.atlassian.com/software/sourcetree/overview ). Wählen Sie einfach die Dateien aus dem Baum aus und klicken Sie oben auf "Entfernen". Dateien werden aus dem lokalen Repository und der lokalen Git-Datenbank gelöscht. Dann festschreiben, dann drücken.
quelle
Einer meiner Kollegen schlug BFG Repo-Cleaner vor, was ich für mächtig halte. Es werden nicht nur unerwünschte Daten gelöscht, sondern auch Ihr Repository von verwandten Commit-Informationen befreit.
quelle
So fügen Sie ein neues Verzeichnis hinzu:
Aber jetzt ist Git dieses neue Verzeichnis nicht bekannt, da Git die Dateien und nicht die Verzeichnisse DIRECTORY verfolgt
Git ist sich der vorgenommenen Änderung nicht bewusst, daher fügen wir versteckte
.keep
Dateien hinzu, um Git auf diese neue Änderung aufmerksam zu machen.Nun, wenn Sie schlagen
git status
Git über die Änderungen informiert.Und wenn Sie das Verzeichnis löschen möchten, sollten Sie diesen Befehl verwenden.
Wenn Sie dies mit überprüfen
git status
, sehen Sie, dass das Verzeichnis entfernt wurde.quelle
Der erste git-Befehl muss wissen, wer Sie sind, bevor Sie etwas löschen
quelle
Eine Kombination der beiden Antworten hat bei mir funktioniert
Wenn immer noch eine Warnung angezeigt wird, entfernen Sie die Dateien manuell
quelle