J'ai un projet Visual Studio existant dans mon référentiel. J'ai récemment ajouté un fichier .gitignore sous mon projet et je suppose que cela dit à Git d'ignorer les fichiers répertoriés dans le fichier.
Mon problème est que tous ces fichiers sont déjà suivis et pour autant que je sache, Git n'ignorera pas un fichier qui a déjà été suivi avant qu'une règle ne soit ajoutée à ce fichier pour l'ignorer.
Il a été suggéré d'utiliser: git rm --cached
et de les supprimer manuellement, mais cela me prendra une éternité pour les parcourir un par un.
J'ai pensé à supprimer le référentiel et à le recréer à nouveau mais cette fois avec le fichier .gitignore présent, mais il doit y avoir une meilleure façon de le faire.
git rm --cached
des répertoires entiers avec l'-r
option, si cela est utileRéponses:
Cette réponse a résolu mon problème:
Tout d'abord, validez toutes les modifications en attente.
Exécutez ensuite cette commande:
Cela supprime tout de l'index, puis lancez simplement:
Engagez-le:
la source
git push origin
également pour refléter les changements dans le référentiel distant..gitignore is now working
message. :)Créez un fichier .gitignore, pour ce faire, il vous suffit de créer un fichier .txt vierge.
Ensuite, vous devez changer son nom en écrivant la ligne suivante sur la cmd (où
git.txt
est le nom du fichier que vous venez de créer):rename git.txt .gitignore
Ensuite, vous pouvez ouvrir le fichier et écrire tous les fichiers non suivis que vous souhaitez ignorer définitivement. Par exemple, le mien ressemble à ceci:
`` ''
Il y a toute une collection de fichiers .gitignore utiles par GitHub
Une fois que vous avez cela, vous devez l'ajouter à votre référentiel git comme tout autre fichier, seulement il doit être à la racine du référentiel.
Ensuite, dans votre terminal, vous devez écrire la ligne suivante:
git config --global core.excludesfile ~ / .gitignore_global
Du document officiel:
Si le référentiel existe déjà, vous devez exécuter ces commandes:
Si l'étape 2 ne fonctionne pas, vous devez écrire la route des trous des fichiers que vous souhaitez ajouter.
la source
Comme spécifié ici Vous pouvez mettre à jour l'index:
Ce faisant, les fichiers n'apparaîtront pas dans
git status
ougit diff
.Pour recommencer le suivi des fichiers, vous pouvez exécuter:
la source
Si vous avez ajouté votre
.gitignore
fichier trop tard, git continuera de suivre les fichiers déjà validés. Pour résoudre ce problème, vous pouvez toujours supprimer toutes les instances mises en cache des fichiers indésirables.Tout d'abord, pour vérifier les fichiers que vous suivez réellement, vous pouvez exécuter:
git ls-tree --name-only --full-tree -r HEAD
Disons que vous avez trouvé des fichiers indésirables dans un répertoire comme
cache/
celui-ci, il est plus sûr de cibler ce répertoire au lieu de tous vos fichiers.Donc au lieu de:
git rm -r --cached .
Il est plus sûr de cibler le fichier ou le répertoire indésirable:
git rm -r --cached cache/
Ensuite, ajoutez toutes les modifications,
git add .
et s'engager ...
git commit -m ".gitignore is now working"
Référence: https://amyetheredge.com/code/13.html
la source
Voici une façon de «décompresser» tous les fichiers qui seraient autrement ignorés sous l'ensemble actuel de modèles d'exclusion:
Cela laisse les fichiers dans votre répertoire de travail mais les supprime de l'index.
L'astuce utilisée ici est de fournir un fichier d'index inexistant à git ls-files afin qu'il pense qu'il n'y a pas de fichiers suivis. Le code shell ci-dessus demande tous les fichiers qui seraient ignorés si l'index était vide, puis les supprime de l'index réel avec git rm.
Une fois les fichiers «non suivis», utilisez git status pour vérifier que rien d'important n'a été supprimé (dans ce cas, ajustez vos modèles d'exclusion et utilisez git reset - chemin pour restaurer l'entrée d'index supprimée). Faites ensuite un nouveau commit qui laisse de côté le «crud».
Le «crud» sera toujours dans tous les vieux commits. Vous pouvez utiliser git filter-branch pour produire des versions propres des anciens commits si vous avez vraiment besoin d'un historique propre (nb en utilisant git filter-branch "réécrira l'historique", donc cela ne devrait pas être entrepris à la légère si vous avez des collaborateurs qui ont tiré n'importe lequel de vos engagements historiques après la première introduction du «crud»).
la source
Supprimer des fichiers de la zone de transit
Ajouter toutes les modifications
Engagez-le:
la source
Je pense que c'est un moyen facile d'ajouter un fichier .gitignore à un référentiel existant.
Prérequis :
Vous avez besoin d'un navigateur pour accéder à votre compte github.
Pas
S'amuser!
la source
Utilisez
git clean
Obtenir de l'aide sur cette course
Si vous voulez voir ce qui se passerait en premier, assurez-vous de passer le commutateur -n pour un essai à sec:
Pour retirer les ordures gitingnored
Attention: vous ignorez peut-être les fichiers de configuration locaux comme database.yml qui seraient également supprimés. À utiliser à vos risques et périls.
ensuite
la source