105 votes

Comment puis-je supprimer un dossier vide et pousser ce changement ?

Comment puis-je supprimer localement un dossier vide et également le faire pour d'autres collaborateurs qui partagent le dépôt distant via pull-push ? Je sais que les dossiers ne sont pas "suivis" de cette manière par git mais la question reste posée.

Par exemple, j'ai déplacé un fichier vers un autre dossier et j'ai validé le changement (du déplacement).

Mais je ne peux pas git rm nom le dossier car j'obtiens "ne correspond pas" git rmdir nom n'existe pas.

Je peux faire un git clean -f dossier mais comment cela est-il renvoyé ?

Je peux directement rm le fichier mais comment puis-je faire correctement la suppression du répertoire et la pousser vers le dépôt, puis vers les autres lorsque ils tirent pour que leur dossier existant soit supprimé.

158voto

Jake Greene Points 1941

La réponse courte: Vous ne pouvez pas pousser des changements vers des répertoires (ajoutés, supprimés, etc.) parce que Git ne suit pas les répertoires individuellement.

Conformément à la FAQ:

Actuellement, la conception de l'index git (zone de mise en staged) ne permet que l'ajout de fichiers, et personne suffisamment compétent pour apporter le changement permettant d'ajouter des 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 n'ont jamais besoin d'être ajoutés au dépôt et ne sont pas suivis individuellement.

Donc, pour Git, votre répertoire vide n'existe plus.

J'ai constaté qu'en prenant l'habitude d'utiliser git clean -fd, cela élimine le besoin de pousser la suppression des répertoires. Cependant, git clean peut supprimer des éléments que vous ne voulez pas supprimer (y compris tout nouveau fichier que vous n'avez pas encore commité), donc j'ai tendance à utiliser d'abord git clean -fdn pour voir ce qui sera supprimé si j'utilise la commande.

Il semble que vous deviez peut-être discuter avec vos collègues développeurs pour nettoyer ce répertoire.

14voto

Ekhtiar Points 693
git add --all
git clean -f -d
git commit -m "trying to remove folders"
git push

0voto

Rich Points 11

Vous ne pouvez pas pousser des dossiers vides. Mais si vous voulez nettoyer les dossiers vides dans votre dépôt cloné/local, commit your latest changes. Puis supprimez simplement tous les fichiers sauf le dossier .git dans votre copie locale. Ensuite, réinitialisez tous les changements, ce qui remet tous les fichiers mais laisse de côté les répertoires vides qu'il ne suit pas.

-6voto

Graeme Hunter Points 1

Une solution un peu bricolée consiste à créer un faux fichier dans le répertoire, le valider, puis le supprimer. En le supprimant, le répertoire sera également supprimé. Donc créer name/fake.txt

git add name/fake.txt
git commit -m "message"
git rm name/fake.txt
git commit -m "message2"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X