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.

210
demandé sur ROMANIA_engineer 2014-06-18 20:10:23

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 .

463
répondu Tod Birdsall 2015-05-21 07:34:02

ç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.

10
répondu qed 2017-08-18 11:57:49

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?

4
répondu vitalets 2017-10-03 15:44:21

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"?

2
répondu user3750325 2014-06-18 16:23:48

Étape 2.5: valider vos modifications:

>git commit

Si vous poussez sans le faire d'abord il ne fait rien!

1
répondu M.H. 2018-09-04 19:05:51