Ignorez la.dossier gitignore lui-même
je viens de faire un git init
sur la racine de mon nouveau projet.
puis j'ai créé un fichier .gitignore
.
maintenant, quand je tape git status
, .gitignore fichier apparaît dans la liste des sans traces de fichiers. Pourquoi est-ce?
19 réponses
le fichier .gitignore
doit se trouver dans votre dépôt, il doit donc être ajouté et engagé, comme le suggère git status
. Il doit être une partie de l'arborescence du dépôt, de sorte que des modifications peuvent être fusionnés et ainsi de suite.
donc, ajoutez-le à votre dépôt, il ne doit pas être gitignored.
si vous voulez vraiment ajouter .gitignore
au fichier .gitignore
si vous ne voulez pas qu'il soit engagé. Toutefois, dans ce cas, il est probablement mieux ajouter l'ignore .git/info/exclude
, une caisse spéciale fichier local qui fonctionne .gitignore mais n'apparaît pas dans" git status "car il est dans le dossier .git
.
si vous voulez stocker la liste des fichiers ignorés en dehors de votre arborescence Git, vous pouvez utiliser le .git/info/exclure "151920920 de fichier". Il est appliqué uniquement à la caisse des pensions.
, Vous pouvez effectivement mettre une ligne ".gitignore" dans votre ".gitignore de fichier". Ce serait la cause de la ".gitignore " fichier à ignorer par git. Je n'ai pas vraiment pense que c'est une bonne idée. Je pense que le fichier ignore devrait être contrôlé et suivi. Je suis juste de mettre ce qui existe pour l'exhaustivité.
vous pouvez également avoir un utilisateur global git .gitignore
fichier qui s'appliquera automatiquement à tous vos repos. Ceci est utile pour les fichiers IDE et editor (par exemple swp
et *~
pour Vim). Changer l'emplacement des répertoires pour suivre votre système d'exploitation
-
ajouter à votre
~/.gitconfig
fichier[core] excludesfile = /home/username/.gitignore
-
créer un
~/.gitignore
fichier avec des motifs de fichier à ignorer -
Enregistrez vos fichiers point dans un autre repo afin d'avoir une sauvegarde (optionnel).
chaque fois que vous copiez, init ou cloner une pension de vos gitignore fichier sera utilisé.
après avoir ajouté le fichier .gitignore
et l'avoir engagé, il n'apparaîtra plus dans la liste" untracked files".
git add .gitignore
git commit -m "add .gitignore file"
git status
si quelqu'un a déjà ajouté un .gitignore
à votre repo, mais que vous voulez y apporter quelques modifications et que ces modifications soient ignorées, faites ce qui suit:
git update-index --assume-unchanged .gitignore
Source .
juste incase quelqu'un d'autre a la même douleur que nous. Nous voulions exclure un dossier déjà engagé.
ce billet était bien plus utile: travailler avec .git/info/exclure trop tard
spécifiquement ce dont vous avez besoin pour ignorer un fichier est en fait d'utiliser la commande git remove Voir git rm ( http://www.kernel.org/pub/software/scm/git/docs/git-rm.html )
vous test
git rm --dry-run *.log
(si vous dites voulu exclure tous les fichiers de log)
cela affichera ce que serait exclu si vous l'aviez lancé.
puis
vous l'exécutez
git rm *.log
(ou quel que soit nom du fichier chemin d'accès / expression que vous voulez)
ajoutez ensuite une ligne *.log
à votre fichier .gitignore
.
l'idée est de mettre des fichiers spécifiques à votre projet dans le fichier .gitignore
et (comme déjà mentionné) de l'ajouter au dépôt. Par exemple, les fichiers .pyc
et .o
, les logs que le site de test crée, certaines fixtures, etc.
pour les fichiers que votre propre configuration crée mais qui n'apparaîtront pas nécessairement pour chaque utilisateur( comme les fichiers .swp
si vous utilisez vim, les répertoires ecplise cachés et similaires), vous devez utiliser .git/info/exclude
(comme déjà mentionné).
bien sûr le .le fichier gitignore apparaît sur le statut, parce qu'il est introuvable, et git le voit comme un nouveau fichier savoureux à manger!
depuis .gitignore est un fichier non piraté, mais c'est un candidat à ignorer par git quand vous le mettez .gitignore!
ainsi, la réponse est simple: il suffit d'ajouter la ligne:
.gitignore # Ignore the hand that feeds!
à la vôtre .gitignore fichier!
et, contrairement à la réponse d'August, je devrais dire que ce n'est pas que de la .le fichier de gitignore devrait être dans votre dépôt. Il se trouve juste qu'il peut être, ce qui est souvent commode. Et il est probablement vrai que c'est la raison .gitignore a été créé comme une alternative à .git/info / exclude, qui n'a pas l'option d'être suivi par le dépôt. En tout cas, comment vous utilisez votre .gitignore fichier est totalement à vous.
pour référence, consultez le gitignore(5) page de manuel kernel.org.
tout d'abord, comme beaucoup d'autres l'ont déjà dit, votre .gitignore
doit être suivi par Git (et ne doit donc pas être ignoré). Laissez-moi vous expliquer pourquoi.
(TL;DR: d'engager la .gitignore
du fichier, et l'utilisation d'un global .gitignore
pour ignorer les fichiers qui sont créés par votre IDE ou système d'exploitation)
Git est, comme vous le savez probablement déjà, une le contrôle de version distribué système . Cela signifie qu'il vous permet de passer d'une version à l'autre (même si le développement a divergé en différentes branches) et il permet également à plusieurs développeurs de travailler sur le même projet.
bien que le suivi de votre .gitignore
ait aussi des avantages lorsque vous passez d'un snapshot à l'autre, la raison la plus importante pour l'engager est que vous voulez partager le fichier avec d'autres développeurs qui travaillent sur le même projet. Par en propageant le fichier dans Git, les autres contributeurs obtiendront automatiquement le fichier .gitignore
lorsqu'ils cloneront le dépôt, de sorte qu'ils n'auront pas à se soucier de propager accidentellement un fichier qui ne devrait pas être propagé (tels que les fichiers journaux, les répertoires de cache, les justificatifs d'identité de la base de données, etc.). Et si à un moment donné le projet .gitignore
est mis à jour, ils peuvent simplement tirer dans ces changements au lieu d'avoir à éditer le fichier manuellement.
bien sûr, il y aura des fichiers et les dossiers que vous aurez envie d'ignorer, mais qui sont spécifiques pour vous, et ne s'appliquent pas à d'autres développeurs. Cependant, ceux-ci ne devraient pas être dans le .gitignore
du projet . Il y a deux autres endroits où vous pouvez ignorer les fichiers et les dossiers:
- les fichiers et dossiers qui sont créés par votre système d'exploitation ou IDE doivent être placés dans un global
.gitignore
. L'avantage est que cette.gitignore
est appliqué à tous les dépôts sur votre ordinateur, donc vous n'avez pas à le répéter pour chaque dépôt. Et il n'est pas partagé avec d'autres développeurs, car ils pourraient utiliser un système d'exploitation et/ou IDE différent. - les fichiers qui n'appartiennent pas au projet
.gitignore
, ni au global.gitignore
, peuvent être ignorés en utilisant le dépôt explicite exclut dansyour_project_directory/.git/info/exclude
. Ce fichier ne sera pas partagé avec d'autres développeurs, et spécifique à ce référentiel unique
attention au" problème " suivant parfois vous voulez ajouter des répertoires mais pas de fichiers dans ces répertoires. La solution simple est de créer un .gitignore avec le contenu suivant:
*
cela fonctionne très bien jusqu'à ce que vous réalisiez que le répertoire n'a pas été ajouté (comme prévu à votre dépôt. La raison pour cela est que la .gitignore sera aussi ignoré, et donc le répertoire est vide. Donc, vous devriez faire quelque chose comme ceci:
*
!.gitignore
cela ne semble fonctionner que pour votre répertoire courant pour obtenir Git
d'ignorer tous les fichiers du dépôt.
mettre à jour ce fichier
.git/info/exclude
avec votre Joker ou votre nom de fichier
*pyc *swp *~
Dans mon cas, je veux exclure un fichier existant. Seulement modifier .gitignore pas de travail. 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 .
accédez au répertoire de base de votre git repo et exécutez la commande suivante:
echo '\.*' >> .gitignore
tous les fichiers de points seront ignorés, y compris ce qui est embêtant .DS_Store si vous êtes sur mac.
si vous avez déjà enregistré .gitignore et vous voulez ignorer les modifications à elle, Vérifiez cette réponse :
essayez cette commande:
git update-index --assume-unchanged FILENAME_TO_IGNORE
pour l'inverser (si vous voulez y apporter des modifications), utilisez:
git update-index --no-assume-unchanged
mise à JOUR :
Voici comment faire la liste 'supposons inchangé' répertoire:
git ls-files -v | grep -E "^[a-z]"
comme l'option
-v
utilisera des lettres minuscules pour "supposer inchangé" fichier.
Il est tout à fait possible qu'un utilisateur veut avoir Git d'ignorer ".gitignore " simplement parce que les dossiers IDE spécifiques créés par Eclipse ne sont probablement pas les mêmes que NetBeans ou un autre IDE. Donc, pour garder le code source IDE antagoniste il rend la vie facile d'avoir un git personnalisé ignore qui n'est pas partagé avec toute l'équipe que les développeurs individuels pourraient être en utilisant différents IDE.
je pense qu'il y a des situations où l'on ignore le .gitignore est très utile. Par exemple, lorsque vous avez plusieurs équipes ou une grande équipe travaillant sur la même base de données. Dans ce cas, vous devez avoir certaines conventions, l'une de ces conventions concerne ce qui est ignoré lors de la prise en pension git. Il s'agit généralement d'ignorer les fichiers et répertoires créés par IDE ou OS, certains journaux générés, etc.
cependant, il y a une force qui tend à introduire modifications non conventionnelles au fichier .gitignore
. Le fichier .gitignore
peut être modifié par une personne irresponsable, par erreur, par un outil utilisé, ou dans un autre cas.
Pour avoir une force contraire à cela, nous pouvons le faire comme suit:
- La première .gitignore devrait refléter la convention en équipe(s),
- , Après il est poussé, le .gitignore doit être sécurisé par ajout .l'entrée de gitignore et pousser ce changement encore.Le fichier
.gitignore
est scellé " de cette façon.
le" sealed .gitignore
fichier peut être modifié, juste localement, sans propager que les changeurs à d'autres membres de l'équipe(s). Toutefois, si un changement fait l'objet d'un large consensus dans l'ensemble de l'équipe(des équipes), il n'est pas possible de le "déverrouiller", de le modifier et de le "sceller" à nouveau. On ne peut pas faire ça par erreur, mais intentionnellement.
Malheureusement, vous ne pouvez pas être protégé à 100% de la stupidité, mais de cette façon vous avez fait tout ce que vous pouvez pour empêcher les choses stupides d'arriver.
si vous avez une équipe relativement petite avec de très bons professionnels, que ce ne serait pas important, mais même ces gars apprécieraient d'avoir une chose de moins à se soucier.
L'utilisation de .git/info/exclude
est cool quand vous ne pouvez rien faire au sujet des paramètres d'infrastructure, couvrant juste votre propre a** de ne pas faire un erreur.
D'un point de vue de ce qui est juste et de ce qui est mal, je vote pour avoir .entrée gitignore à l'intérieur du fichier .gitignore
, donnant à chacun la liberté de faire localement ce qu'il veut, mais sans en envahir d'autres.
j'ai trouvé que le meilleur endroit pour mettre en place un ignorer aux fichus .DS_Store
est dans le fichier .git/info/exclude
.
IntelliJ semble le faire automatiquement lorsque vous configurez un dépôt git.
.gitignore
consiste à ignorer autres fichiers. git est à propos des fichiers donc il s'agit d'ignorer les fichiers. Cependant, comme git travaille hors fichiers, ce fichier doit être là comme mécanisme pour lister les autres noms de fichiers.
si on l'appelait .the_list_of_ignored_files
ça pourrait être un peu plus évident.
une analogie est une liste de choses à faire que vous ne voulez pas faire. À moins que vous ne les énumériez quelque part est une sorte de liste "à faire" vous ne pas les connaître.