it-swarm.com.de

Wie entferne ich ein Verzeichnis aus dem Git-Repository?

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?

1094
Sahat Yalkabov

Entfernen Sie das Verzeichnis aus git und local

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)

Entferne das Verzeichnis von 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:

git rm -r --cached myFolder
2070
karmakaze

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

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

remove directory

253
eirenaios

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 dann
git commit -m 'deleting directory'
und dann
git Push Origin master.

71
cmcculloh

Sie können dies versuchen: git rm -rf <directory_name>

Das Löschen des Verzeichnisses wird erzwungen.

20
Breen ho

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.

16
dbr

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 >

6
anky

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.

4
ettanany

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
4
shrikant

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.

4
Rida

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.

2
Sergey Groshev

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.

1
thanh.h.le

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.

1
Abo3atef

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.

0
Skyborg

Der erste Git-Befehl muss wissen, wer Sie sind, bevor Sie etwas löschen

  1. git Init
  2. git config user.name "jemand"
  3. git config user.email "[email protected]"
  4. git rm -r
  5. git commit -m "Löschverzeichnis"
  6. git Push Origin Master
0
Zeus