Question

Je l'ai obtenu mon @ repo github. Je l'ai fait un peu de travail à la maison et à poussais GitHub. Il a impliqué une suppression des fichiers et des répertoires. Maintenant, je suis sur ma boîte de travail, qui avait une copie du code avant de supprimer les fichiers et les répertoires.

Je publié la recommandation suivante:

git remote update
git checkout HEAD
git pull origin HEAD

supprimé tous les fichiers qu'il devrait avoir, mais pas les répertoires les fichiers étaient dans.

Deux questions:

  1. Pourquoi il ne supprime pas les répertoires?
  2. Y at-il une commande git je peux émettre dans l'état actuel de les supprimer?
Était-ce utile?

La solution

Git ne suit pas les répertoires, il ne supprimera pas ceux qui sont vides à la suite d'une fusion ou tout autre changement. Cependant, vous pouvez utiliser git clean -fd pour supprimer des répertoires non suivis (les moyens de drapeau de -fd f suppression orce des fichiers et trassez d irectories).

Autres conseils

Dans le cadre de la plupart des opérations qui modifient l'arbre de travail (traction, fusion, caisse, etc.) git supprimera tous les répertoires qui sont vidait par cette opération (à savoir git enlevé le dernier fichier).

git ne supprimera pas les répertoires qui ne sont pas complètement vides, donc si vous avez caché ou ignoré des fichiers alors simplement parce que git supprime le dernier TRACKED fichier à partir de ce répertoire ne signifie pas nécessairement que git sera en mesure de supprimer ce répertoire. git ne considère pas que ce soit une condition d'erreur ne sera donc pas se plaindre à ce sujet.

Git ne suit pas les répertoires, les fichiers (avec leur chemin). Git crée tous les répertoires pour ces chemins si elles ne sont pas encore réunies (cool!), Mais il ne pas les supprimer si tous les fichiers contenus dans un chemin sont déplacés ou supprimés (pas cool ☹. .. mais il y a des raisons).

Solution (une fois que vous avez tiré / avance rapide / fusionnée):

git stash --include-untracked
git clean -fd
git stash pop

Si vous ne stash pas avant clean, vous perdrez tous vos fichiers trassez (irréversible).

Remarque: puisque ce nettoie tous les fichiers negliges, vous pourriez avoir besoin pour exécuter certains de vos scripts construire à nouveau pour recréer les métadonnées du projet (ex: ./gradlew eclipse). Ce également supprimer des répertoires qui sont vides et qui étaient jamais fait partie des chemins de fichiers git.

Git ne suit pas les répertoires actuellement (voir git wiki ), < grève> qui est, vous ne pouvez ajouter des répertoires vides, ni ne git supprimer des répertoires qui finissent vide (EDIT:. Merci, Manni, je me suis trompé vous ne pouvez pas Ajouter répertoires vides, mais git supprimer répertoires qui sont vides parce que leur contenu suivi a été supprimé. )

Quant à la commande pour supprimer les répertoires vides. Qui dépend de votre système d'exploitation

Pour Linux, vous pouvez utiliser, par exemple.

find -depth -type d -empty -exec rmdir {} \;

Cependant, cela supprimera tous répertoires vides!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top