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?
Sie können mit beiden Verzeichnissen 'master' auschecken.
git rm -r one-of-the-directories
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
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 in 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 geben Sie den Ordnernamen ein. Sie können so viele eingeben, wie Sie möchten
. Gitignore Datei wird so aussehen
/FolderName
Wenn das, was Karmakaze gesagt hat, aus irgendeinem Grund nicht funktioniert, können Sie versuchen, das gewünschte Verzeichnis mit oder in Ihrem Dateisystem-Browser zu löschen (z. B. im Windows-Datei-Explorer). Geben Sie nach dem Löschen des Verzeichnisses den folgenden Befehl ein:git add -A
und danngit commit -m 'deleting directory'
und danngit Push Origin master
.
Sie können dies versuchen: git rm -rf <directory_name>
Das Löschen des Verzeichnisses wird erzwungen.
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 svn rm emptyfolder/
explizit angeben müssen, und im Übrigen beschreibt sich die man
Seite für git selbst als "dummer Content Tracker".
Eine Antwort auf "Wie füge ich ein leeres Verzeichnis zu einem Git-Repository hinzu" Links zu FAQ zu diesem Thema :
Gegenwärtig erlaubt das Design des Git-Index (Staging-Bereich) nur das Auflisten von Dateien, und niemand, der kompetent genug ist, 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 nie zum Repository hinzugefügt werden und werden nicht eigenständig verfolgt.
Sie können "
git add <dir>
" sagen und es werden Dateien hinzugefügt.Wenn Sie wirklich ein Verzeichnis für das Auschecken benötigen, sollten Sie eine Datei darin erstellen. .gitignore eignet sich gut für diesen Zweck; Sie können das Feld leer lassen oder die Namen der Dateien eingeben, die im Verzeichnis angezeigt werden sollen.
Gehen Sie in Ihr Git-Verzeichnis und geben Sie den folgenden Befehl ein: rm -rf < Directory Name >
Nach dem Löschen des Verzeichnisses übernehmen Sie die Änderungen mit: git commit -m "Your Commit Message"
Dann einfach die Änderungen in das entfernte GIT-Verzeichnis übertragen: git Push Origin < Branch name >
Normalerweise verwende ich git add --all
, um Dateien/Ordner aus Remote-Repositorys zu entfernen
rm -r folder_name
git add --all
git commit -m "some comment"
git Push Origin master
master
kann durch jeden anderen Zweig des Repositorys ersetzt werden.
Sie können den Ordner lokal löschen und dann wie folgt pushen:
git rm -r folder_name
git commit -m "your commit"
git Push Origin master
für Leere Ordner löschen
ich wollte ein leeres Verzeichnis (Ordner) löschen, das ich erstellt habe. Git kann es nicht löschen, nachdem ich herausgefunden habe, dass Git keine leeren Verzeichnisse aufspürt. Wenn Sie ein leeres Verzeichnis in Ihrem Arbeitsbaum haben, sollten Sie es einfach mit entfernen
rm -r folderName
Es besteht keine Notwendigkeit, Git einzubeziehen.
Sie können Attlasian Source Tree (Windows) verwenden ( https://www.atlassian.com/software/sourcetree/overview ). Wählen Sie einfach Dateien aus dem Baum und klicken Sie oben auf "Entfernen". Dateien werden aus dem lokalen Repository und der lokalen Git-Datenbank gelöscht. Dann Commit, dann Push.
Einer meiner Kollegen schlug vor BFG Repo-Cleaner was ich für mächtig halte. Es werden nicht nur unerwünschte Daten gelöscht, sondern auch alle zugehörigen Festschreibungsinformationen aus Ihrem Repository entfernt.
So fügen Sie ein neues Verzeichnis hinzu:
mkdir <YOUR-DIRECTORY>
Aber jetzt wird Git von diesem neuen Verzeichnis nicht beachtet, da Git die Dateien und nicht die Verzeichnisse DIRECTORY verfolgt
git status
Git wird die vorgenommene Änderung nicht berücksichtigen, daher fügen wir eine versteckte .keep
-Datei hinzu, um Git auf diese neue Änderung aufmerksam zu machen.
touch /YOUR-directory/.keep
Wenn Sie nun git status
drücken, wird Git die Änderungen bemerken.
Und wenn Sie das Verzeichnis löschen möchten, sollten Sie diesen Befehl verwenden.
rm -r <YOUR-DIRECTORY>
Und wenn Sie mit git status
geprüft haben, sehen Sie, dass das Verzeichnis entfernt wurde.
Ich hatte den Ordner bereits zuvor festgeschrieben und möchte das Verzeichnis auch im Verlauf entfernen.
Ich habe folgendes gemacht:
Ordner zu .gitignore
hinzufügen:
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
entferne die Refs von 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 sind
rm -Rf .git/logs .git/refs/original
Führen Sie eine Speicherbereinigung durch
git gc --Prune=all --aggressive
Übertragen Sie Änderungen in das Online-Repository:
git Push
Du bist hier fertig.
Sie können aber folgendermaßen vorgehen, um alle Änderungen an alle Zweige zu senden: Aber seien Sie vorsichtig mit diesem Befehl!
git Push Origin --all --force
git Push Origin --tags --force
Danach wurde der Ordner aus Git entfernt, aber nicht von der lokalen Festplatte gelöscht.
Der erste Git-Befehl muss wissen, wer Sie sind, bevor Sie etwas löschen