Je viens de faire un git init
à la racine de mon nouveau projet.
Ensuite, j'ai créé un fichier .gitignore
.
Maintenant, lorsque je tape git status
, . Gitignore le fichier apparaît dans la liste des fichiers non suivis. Pourquoi donc?
Le fichier .gitignore
doit se trouver dans votre référentiel. Il doit donc être ajouté et validé, comme le suggère git status
. Cela doit faire partie de l'arborescence du référentiel afin que les modifications qui y sont apportées puissent être fusionnées, etc.
Alors, ajoutez-le à votre référentiel, il ne devrait pas être gitignored.
Si vous le souhaitez vraiment, vous pouvez ajouter .gitignore
au fichier .gitignore
si vous ne souhaitez pas le valider. Cependant, dans ce cas, il est probablement préférable d’ajouter ignores à .git/info/exclude
, un fichier spécial de contrôle local qui fonctionne exactement comme .gitignore mais ne s'affiche pas dans "git status" puisqu'il se trouve dans le .git
. dossier.
Si vous voulez stocker la liste des fichiers ignorés en dehors de votre arbre Git, vous pouvez utiliser le fichier . Git/info/exclude. Il s’applique uniquement à votre commande du repo.
Vous pouvez réellement mettre une ligne ".gitignore" dans votre fichier ".gitignore". Cela ferait en sorte que le fichier ".gitignore" soit ignoré par git. Je ne pense pas vraiment que ce soit une bonne idée. Je pense que le fichier ignore devrait être contrôlé et suivi. Je ne fais que mettre ceci dehors pour la complétude.
Vous pouvez également avoir un fichier utilisateur global git .gitignore
qui s'appliquera automatiquement à tous votre dépôt. Ceci est utile pour IDE et les fichiers d’éditeur (par exemple, les fichiers swp
et *~
pour Vim). Modifier les emplacements de répertoire pour correspondre à votre système d'exploitation
Ajoutez à votre fichier ~/.gitconfig
[core]
excludesfile = /home/username/.gitignore
Créez un fichier ~/.gitignore
avec des modèles de fichiers à ignorer
Enregistrez vos fichiers de points dans un autre dépôt afin de disposer d’une sauvegarde (facultatif).
Chaque fois que vous copiez, initiez ou clonez un repo, votre fichier global gitignore sera également utilisé.
Si quelqu'un a déjà ajouté un .gitignore
à votre référentiel, mais que vous souhaitez y apporter des modifications et que ces modifications sont ignorées, procédez comme suit:
git update-index --assume-unchanged .gitignore
Source .
Une fois que vous avez ajouté le fichier .gitignore
et que vous l'avez validé, il n'apparaît plus dans la liste "Fichiers non suivis".
git add .gitignore
git commit -m "add .gitignore file"
git status
Juste au cas où quelqu'un d'autre a la même douleur que nous. Nous voulions exclure un fichier déjà validé.
Cet article était bien plus utile: travailler avec .git/info/exclude trop tard
Plus précisément, pour ignorer un fichier, vous devez utiliser la commande git remove Voir git rm ( http://www.kernel.org /pub/software/scm/git/docs/git-rm.html )
vous le testez en allant
git rm --dry-run *.log
(si vous dites vouloir exclure tous les fichiers journaux)
cela affichera ce que serait exclu si vous l'exécutiez.
ensuite
vous l'exécutez en allant
git rm *.log
(ou le chemin/expression du nom de fichier que vous voulez)
Ajoutez ensuite une ligne _*.log
_ à votre fichier _.gitignore
_.
Bien sûr, le fichier .gitignore apparaît sur le statut, car il est non suivi, et git le considère comme un nouveau fichier savoureux à manger!
Comme .gitignore est un fichier non suivi, il est donc possible d’être ignoré par git lorsque vous le mettez dans .gitignore!
Donc, la réponse est simple: ajoutez simplement la ligne:
.gitignore # Ignore the hand that feeds!
dans votre fichier .gitignore!
Et, contrairement à la réponse d'August, je devrais dire que ce n'est pas que le fichier .gitignore devrait se trouver dans votre référentiel. Il se trouve que cela peut être, ce qui est souvent pratique. Et il est probablement vrai que c’est la raison pour laquelle .gitignore a été créé comme alternative à .git/info/exclude, qui n’a pas la possibilité d’être suivi par le référentiel. Quoi qu'il en soit, la façon dont vous utilisez votre fichier .gitignore dépend entièrement de vous.
Pour référence, consultez la page de manuel gitignore (5) sur kernel.org.
L'idée est de placer les fichiers spécifiques à votre projet dans le fichier .gitignore
et de les ajouter (comme cela a déjà été mentionné) au référentiel. Par exemple, les fichiers .pyc
et .o
, les journaux créés par la suite de tests, certains appareils fixes, etc.
Pour les fichiers créés par votre propre configuration mais qui n'apparaîtront pas nécessairement pour chaque utilisateur (comme les fichiers .swp
si vous utilisez vim, les répertoires cachés ecplise, etc.), vous devez utiliser .git/info/exclude
(comme déjà mentionné). .
Tout d’abord, comme beaucoup d’autres déjà dit, votre .gitignore
devrait être suivi par Git (et ne devrait donc pas être ignoré). Laisse moi expliquer pourquoi.
(TL; DR: validez le fichier .gitignore
et utilisez un global .gitignore
pour ignorer les fichiers créés par votre IDE ou votre système d'exploitation)
Comme vous le savez probablement déjà, Git est un système de contrôle de version distribué . Cela signifie que cela vous permet de passer d'une version à une autre (même si le développement a divergé dans différentes branches) et de permettre à plusieurs développeurs de travailler sur le même projet.
Bien que le suivi de votre .gitignore
présente également des avantages lorsque vous basculez entre des instantanés, la raison la plus importante de le valider est que vous souhaitez partager le fichier avec d'autres développeurs travaillant sur le même projet. En validant le fichier dans Git, les autres contributeurs obtiendront automatiquement le fichier .gitignore
lorsqu’ils cloneront le référentiel. Ils n'auront ainsi plus à s’inquiéter de la validation accidentelle d’un fichier qui ne devrait pas être validé répertoires de cache, informations d'identification de la base de données, etc.). Et si, à un moment donné, le .gitignore
du projet est mis à jour, ils peuvent simplement extraire ces modifications au lieu de devoir modifier le fichier manuellement.
Bien sûr, vous voudrez peut-être ignorer certains fichiers et dossiers, mais ils sont spécifiques à votre cas et ne s'appliquent pas aux autres développeurs. Cependant, ceux-ci ne doivent pas figurer dans le .gitignore
du projet. Il existe deux autres endroits où vous pouvez ignorer des fichiers et des dossiers:
.gitignore
. L'avantage est que ce .gitignore
est appliqué à tous les référentiels de votre ordinateur. Vous n'avez donc pas à le répéter pour chaque référentiel. Et il n'est pas partagé avec d'autres développeurs, car ils pourraient utiliser un système d'exploitation et/ou un IDE différent..gitignore
du projet ni au global .gitignore
peuvent être ignorés à l'aide de le référentiel explicite est exclu dans your_project_directory/.git/info/exclude
. Ce fichier ne sera pas partagé avec d'autres développeurs et est spécifique à ce référentiel unique.Méfiez-vous du "problème" suivant Parfois, vous souhaitez ajouter des répertoires mais aucun fichier dans ces répertoires. La solution simple consiste à créer un fichier .gitignore avec le contenu suivant:
*
Cela semble fonctionner correctement jusqu'à ce que vous réalisiez que le répertoire n'a pas été ajouté (comme prévu dans votre référentiel. La raison en est que le fichier .gitignore sera également ignoré et que, par conséquent, le répertoire sera vide. :
*
!.gitignore
Cela semble fonctionner uniquement pour votre répertoire actuel afin que Git
ignore tous les fichiers du référentiel.
mettre à jour ce fichier
.git/info/exclude
avec votre joker ou nom de fichier
*pyc *swp *~
Dans mon cas, je veux exclure un fichier existant. Seulement modifier . Gitignore ne fonctionne pas. J'ai suivi ces étapes:
git rm --cached dirToFile/file.php
vim .gitignore
git commit -a
De cette façon, j'ai nettoyé du cache le fichier que je voulais exclure et après l'avoir ajouté à . Gitignore.
Si vous avez déjà enregistré .gitignore et que vous souhaitez ignorer les modifications, consultez cette réponse :
Essayez d'utiliser cette commande:
git update-index --assume-unchanged FILENAME_TO_IGNORE
Pour l'inverser (si vous souhaitez jamais y apporter des modifications), utilisez:
git update-index --no-assume-unchanged
UPDATE:
Voici comment lister les fichiers "supposés inchangés" dans le répertoire courant:
git ls-files -v | grep -E "^[a-z]"
Comme l'option
-v
utilisera des lettres minuscules pour les fichiers 'supposés inchangés'.
Accédez au répertoire de base de votre dépôt Git et exécutez la commande suivante:
echo '\\.*' >> .gitignore
Tous les fichiers de points seront ignorés, y compris ce satané .DS_Store si vous êtes sur un mac.
Il est fort possible qu'un utilisateur final souhaite que Git ignore le fichier ".gitignore" simplement parce que les dossiers spécifiques à IDE créés par Eclipse ne sont probablement pas identiques à ceux de NetBeans ou d'un autre IDE. Donc, pour garder le code source IDE antagoniste, il est facile d'avoir un git ignore personnalisé qui n'est pas partagé avec toute l'équipe, car chaque développeur peut utiliser différents IDE.
Je pense qu'il y a des situations où ignorer le .gitignore est très utile. Par exemple, lorsque vous avez plusieurs équipes ou une grande équipe travaillant sur la même base de code. Dans ce cas, vous devez avoir certaines conventions, dont l'une concerne ce qui est ignoré dans le dépôt git. Il s’agit généralement d’ignorer les fichiers et les répertoires créés par IDE ou le système d’exploitation, certains journaux générés, etc.
Cependant, il existe une force qui tend à introduire des modifications non conventionnelles dans le fichier .gitignore
. Le fichier .gitignore
peut être encore modifié par une personne irresponsable, par erreur, par un outil utilisé ou dans un autre cas.
Pour avoir une contre-force à cela, nous pouvons faire comme suit:
.gitignore
est ainsi "scellé".Le fichier "scellé" .gitignore
peut être modifié, uniquement localement, sans propager ces changeurs aux autres membres de l'équipe. Cependant, si un changement est largement accepté par l'ensemble de l'équipe (des équipes), il est possible de le "dé-sceller", de le changer et de le "sceller" à nouveau. Cela ne peut pas être fait par erreur, seulement intentionnellement.
Malheureusement, vous ne pouvez pas être protégé à 100% contre la stupidité, mais de cette façon, vous avez tout mis en œuvre pour éviter que des choses stupides ne se produisent.
Si vous avez une équipe relativement petite avec de très bons professionnels, cela ne serait pas important, mais même ces gars-là apprécieraient d'avoir moins de soucis à se faire.
Utiliser .git/info/exclude
est cool quand vous ne pouvez rien faire avec les paramètres d'infrastructure, vous pouvez juste couvrir votre propre ** pour ne pas vous tromper.
En ce qui concerne ce qui est juste et ce qui ne va pas, je vote pour que .gitignore entre dans le fichier .gitignore
, donnant à chacun la liberté de faire localement tout ce qu’il veut, sans toutefois envahir les autres.
.gitignore
consiste à ignorer les fichiers autres. git concerne les fichiers donc il s’agit d’ignorer les fichiers. Cependant, comme git fonctionne avec des fichiers, ce fichier doit être présent comme mécanisme pour lister les autres noms de fichiers.
Si cela s'appelait .the_list_of_ignored_files
cela serait peut-être un peu plus évident.
Une analogie est une liste de choses à faire que vous ne voulez PAS faire. A moins que vous ne les listiez quelque part, vous ne saurez rien à leur sujet.
J'ai trouvé que le meilleur endroit pour configurer une ignorance des fichiers embêtants .DS_Store
est dans le fichier .git/info/exclude
.
IntelliJ semble le faire automatiquement lorsque vous configurez un référentiel git dans celui-ci.