J'ai 2 répertoires sur mon référentiel GitHub. Je voudrais supprimer l'un d'eux. Comment pourrais-je faire cela sans supprimer et recréer le référentiel entier?
J'ai 2 répertoires sur mon référentiel GitHub. Je voudrais supprimer l'un d'eux. Comment pourrais-je faire cela sans supprimer et recréer le référentiel entier?
Réponses:
Vous pouvez extraire «master» avec les deux répertoires;
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)
Comme mentionné dans les commentaires, ce que vous voulez généralement faire est de supprimer ce répertoire de git mais pas de le supprimer entièrement du système de fichiers (local)
Dans ce cas, utilisez:
git rm -r --cached myFolder
git rm -r myFolder
cela a fonctionné, mais j'ai également tout supprimé du répertoire "MyFolder". J'ai dû tout rétablir dans le répertoire "MyFolder", puis valider.
git rm -r --cached myFolder
git rm -r --cached directory/
supprime uniquement de git tracké, mais la structure du référentiel reste.
Étapes pour supprimer le répertoire
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
Étapes pour ignorer ce dossier dans les prochains validations
Pour ignorer ce dossier à partir des validations suivantes, créez un fichier à la racine nommé .gitignore et mettez-y le nom de ce dossier. Vous pouvez en mettre autant que vous le souhaitez
Le fichier .gitignore ressemblera à ceci
/FolderName
Si, pour une raison quelconque, ce que Karmakaze a dit ne fonctionne pas, vous pouvez essayer de supprimer le répertoire que vous souhaitez utiliser ou avec le navigateur de votre système de fichiers (par exemple, dans l'Explorateur de fichiers Windows). Après avoir supprimé le répertoire, lancez la commande:
git add -A
puis
git commit -m 'deleting directory'
puis puis
git push origin master
.
Vous pouvez essayer ceci:
git rm -rf <directory_name>
Cela forcera la suppression du répertoire.
Si vous supprimez les fichiers du répertoire (avec git rm
comme les autres réponses l'expliquent), le répertoire n'existe plus en ce qui concerne git. Vous ne pouvez pas valider un répertoire vide, ni en supprimer un.
C'est différent de la subversion où vous devez explicitement svn rm emptyfolder/
, et c'est d'ailleurs pourquoi la man
page pour git se décrit comme "le stupide tracker de contenu"
Une réponse sur "Comment ajouter un répertoire vide à un référentiel git" renvoie à la FAQ à ce sujet :
Actuellement, la conception de l'index git (zone de transit) ne permet que la liste des fichiers, et personne suffisamment compétent pour effectuer la modification pour autoriser les répertoires vides ne s'est suffisamment soucié de cette situation pour y remédier.
Les répertoires sont ajoutés automatiquement lors de l'ajout de fichiers à l'intérieur. Autrement dit, les répertoires ne doivent jamais être ajoutés au référentiel et ne sont pas suivis par eux-mêmes.
Vous pouvez dire "
git add <dir>
" et il y ajoutera des fichiers.Si vous avez vraiment besoin qu'un répertoire existe dans les caisses, vous devez y créer un fichier. .gitignore fonctionne bien à cet effet; vous pouvez le laisser vide ou remplir les noms des fichiers que vous prévoyez d'afficher dans le répertoire.
J'avais déjà validé le dossier auparavant et je souhaite également supprimer le répertoire de l'historique.
J'ai fait ce qui suit:
Ajouter un dossier à .gitignore
:
echo Folder_Name/ >> .gitignore
Supprimer de tous les commits:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all
supprimez les références des anciens commits:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
Assurez-vous que toutes les anciennes références sont complètement supprimées
rm -Rf .git/logs .git/refs/original
Effectuer une collecte des ordures
git gc --prune=all --aggressive
vous pousser les modifications dans le référentiel en ligne:
git push
Vous avez terminé ici.
Mais vous pouvez faire ce qui suit pour pousser toutes les modifications à toutes les branches avec: Mais soyez prudent avec cette commande!
git push origin --all --force
git push origin --tags --force
Après cela, le dossier a été supprimé de git, mais n'a pas été supprimé du disque local.
pour supprimer des dossiers vides
je voulais supprimer un répertoire vide (dossier) que j'ai créé, git ne peut pas le supprimer, après quelques recherches, j'ai appris que Git ne suit pas les répertoires vides. Si vous avez un répertoire vide dans votre arborescence de travail, vous devez simplement le supprimer avec
rm -r folderName
Il n'est pas nécessaire d'impliquer Git.
Accédez à votre répertoire git, puis tapez la commande suivante: rm -rf < nom du répertoire >
Après avoir supprimé le répertoire, validez les modifications en: git commit -m "Your Commit Message"
Ensuite, poussez simplement les modifications sur le répertoire GIT distant: git push origin < nom de la branche >
Vous pouvez utiliser l'arbre source Attlasian (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Sélectionnez simplement les fichiers dans l'arborescence et appuyez sur le bouton "Supprimer" en haut. Les fichiers seront supprimés du référentiel local et de la base de données git locale. Ensuite, validez, puis appuyez.
Un de mes collègues a suggéré BFG Repo-Cleaner que je trouve puissant. Il s'agit non seulement de supprimer les données indésirables, mais également de nettoyer votre référentiel de toute information de validation associée.
Pour ajouter un nouveau répertoire:
mkdir <YOUR-DIRECTORY>
Mais maintenant, Git n'est pas au courant de ce nouveau répertoire, car Git garde la trace des fichiers et non des répertoires RÉPERTOIRE
git status
Git ne sera pas au courant de la modification que nous avons apportée, nous ajoutons donc un .keep
fichier caché pour rendre Git conscient de cette nouvelle modification.
touch /YOUR-directory/.keep
Maintenant, si vous touchez, git status
Git sera au courant des changements.
Et si vous souhaitez supprimer le répertoire, vous devez utiliser cette commande.
rm -r <YOUR-DIRECTORY>
Et si vous avez vérifié en utilisant git status
, vous verrez que le répertoire a été supprimé.
Une combinaison des 2 réponses a fonctionné pour moi
git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push
s'il affiche toujours un avertissement, supprimez les fichiers manuellement
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push