Je dois exclure un dossier (téléchargement de nom) du suivi. J'ai essayé de courir
git rm -r --cached wordpress/wp-content/uploads
et après cela j'ai ajouté le chemin vers .gitignore
/wordpress/wp-content/uploads
mais quand j'ai couru, git status
ils apparaissent comme supprimés. Si j'essaie de valider les modifications, les fichiers seront supprimés, non seulement supprimés du suivi.
Qu'est-ce que je fais mal?
J'ai aussi essayé
git update-index --assume-unchanged <file>
mais cela semble ne suivre que les fichiers. Mais je dois supprimer un dossier entier (y compris les sous-dossiers) du suivi.
reset --hard
, ce sera le cas.pull
engagez ailleurs, ces fichiers seront supprimés du nouveau système.Réponses:
Je suis tombé sur cette question pendant que Google recherchait "git remove folder from tracking". La question du PO m'a amené à la réponse. Je le résume ici pour les générations futures.
Question
Comment supprimer un dossier de mon référentiel git sans le supprimer de ma machine locale (c'est-à-dire l'environnement de développement)?
Réponse
Étape 1. Ajoutez le chemin du dossier au
.gitignore
fichier racine de votre référentiel .Étape 2. Supprimez le dossier de votre suivi git local, mais conservez-le sur votre disque.
Étape 3. Envoyez vos modifications à votre dépôt git.
Le dossier sera considéré comme "supprimé" du point de vue de Git (c'est-à-dire qu'ils sont dans l'histoire passée, mais pas dans le dernier commit, et les personnes tirant de ce dépôt verront les fichiers supprimés de leurs arbres), mais restez dans votre répertoire de travail parce que vous avez utilisé
--cached
.la source
Cela fonctionne pour moi:
--ignore-unmatch
est important ici, sans cette option, git se terminera avec une erreur sur le premier fichier qui n'est pas dans l'index.la source
unknown option 'ignore unmatched'
git rm -r --cached --ignore-unmatch .idea/*.xml
Pour oublier le répertoire récursivement, ajoutez
/*/*
au chemin:L'utilisation
git rm --cached
n'est pas bonne pour la collaboration. Plus de détails ici: Comment arrêter le suivi et ignorer les modifications apportées à un fichier dans Git?la source
Je sais que c'est un vieux fil mais je voulais juste en ajouter un peu car la solution marquée n'a pas résolu le problème pour moi (même si j'ai essayé plusieurs fois).
La seule façon dont je pouvais réellement arrêter git form de suivre le dossier était de faire ce qui suit:
git rm -r --cached your_folder/
your_folder/
à .gitignoreVous devriez maintenant voir que le dossier n'est plus suivi.
Ne me demandez pas pourquoi l'effacement du cache n'a pas fonctionné pour moi, je ne suis pas un super assistant Git mais c'est ainsi que j'ai résolu le problème.
la source
De la documentation git:
Une autre chose utile que vous voudrez peut-être faire est de conserver le fichier dans votre arborescence de travail mais de le supprimer de votre zone de transit. En d'autres termes, vous souhaiterez peut-être conserver le fichier sur votre disque dur mais ne plus laisser Git le suivre. Cela est particulièrement utile si vous avez oublié d'ajouter quelque chose à votre fichier .gitignore et que vous l'avez accidentellement mis en scène, comme un gros fichier journal ou un tas de fichiers compilés .a. Pour ce faire, utilisez l'option --cached:
Alors peut-être ne pas inclure le "-r"?
la source
--cached
. L'-r
option est pour "récursif", qui devrait être inclus dans cette instance.