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?
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?
Antworten:
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)
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:
git rm -r --cached myFolder
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.
Schritte zum Entfernen des Verzeichnisses
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
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
Die .gitignore- Datei sieht folgendermaßen aus
/FolderName
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.
Eine Antwort auf "Wie füge ich einem Git-Repository ein leeres Verzeichnis hinzu?" Verlinkt auf die FAQ zu diesem Thema :
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 hatte den Ordner bereits zuvor festgeschrieben und möchte das Verzeichnis auch im Verlauf entfernen.
Ich habe folgendes gemacht:
Ordner hinzufügen zu .gitignore
:
echo Folder_Name/ >> .gitignore
Von allen Commits entfernen:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all
Entfernen Sie die Refs aus den alten Commits:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
Stellen Sie sicher, dass alle alten Refs vollständig entfernt wurden
rm -Rf .git/logs .git/refs/original
Führen Sie eine Speicherbereinigung durch
git gc --prune=all --aggressive
Pushen Sie Änderungen in das Online-Repository:
git push
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!
git push origin --all --force
git push origin --tags --force
Danach wurde der Ordner von git entfernt, aber nicht von der lokalen Festplatte gelöscht.
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
rm -r folderName
Es ist nicht erforderlich, Git einzubeziehen.
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 >
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.
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.
So fügen Sie ein neues Verzeichnis hinzu:
mkdir <YOUR-DIRECTORY>
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 .keep
Dateien 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.
Eine Kombination der beiden Antworten hat bei mir funktioniert
git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push
Wenn immer noch eine Warnung angezeigt wird, entfernen Sie die Dateien manuell
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push