Supprimer un dossier du suivi git
je dois exclure un dossier (name uploads) du suivi. J'ai essayé de courir
git rm -r --cached wordpress/wp-content/uploads
et ensuite j'ai ajouté le chemin.gitignore
/wordpress/wp-content/uploads
mais quand j'ai lancé git status
ils apparaissent comme effacés. Si j'essaie de valider les modifications, les fichiers seront supprimés, non seulement retiré de suivi.
Qu'est-ce que je fais de mal?
j'ai aussi essayé
git update-index --assume-unchanged <file>
mais cela semble ne déballer que les fichiers. Mais je dois supprimer un dossier entier (y compris les sous-dossiers) du suivi.
5 réponses
je suis tombé sur cette question en Googlant pour"Git supprimer le dossier de suivi". La question de L'OP m'amène à la réponse. Je le résume ici pour les générations futures.
Question
Comment puis-je supprimer un dossier de mon dépôt git sans le supprimer de ma machine locale (i.e., environnement de développement)?
Réponse
Étape 1. Ajouter le chemin du dossier vers le fichier racine .gitignore
de votre repo.
path_to_your_folder/
Étape 2. Retirez le dossier de votre suivi git local, mais gardez-le sur votre disque.
git rm -r --cached path_to_your_folder/
Étape 3. Poussez vos modifications sur votre git repo.
le dossier sera considéré comme "supprimé" du point de vue de Git (i.e. ils sont dans l'histoire passée, mais pas dans le dernier commit, et les gens qui sortent de ce rapport obtiendront les fichiers supprimés de leur trees), mais restez dans votre répertoire de travail car vous avez utilisé --cached
.
ça marche pour moi:
git rm -r --cached --ignore-unmatch folder_name
--ignore-unmatch
est important ici, sans cette option git sortira avec erreur sur le premier fichier non dans l'index.
pour oublier le répertoire ajouter récursivement /*/*
au chemin:
git update-index --assume-unchanged wordpress/wp-content/uploads/*/*
utiliser git rm --cached
n'est pas bon pour la collaboration. Plus de détails ici: Comment arrêter de suivre et ignorer les changements dans un fichier Git?
de la documentation git:
une autre chose utile que vous pourriez vouloir faire est de garder le fichier dans votre arbre de travail mais le retirer de votre zone de rassemblement. En d'autres termes, vous voudrez peut-être conserver le fichier sur votre disque dur, mais pas Git piste plus. Ceci est particulièrement utile si vous avez oublié d'ajouter quelque chose à votre .gitignore et mis en scène accidentellement, comme un gros fichier journal ou un tas de .un des fichiers compilés. Pour ce faire, utilisez l'option --option de mise en cache:
$ git rm --cached readme.txt
donc peut-être ne pas inclure le "- r"?
Étape 2.5: valider vos modifications:
>git commit
Si vous poussez sans le faire d'abord il ne fait rien!