GIT-exclure / ignorer les fichiers de commit [dupliquer]

cette question a déjà une réponse ici:

  • décompresser temporairement les fichiers git 10 réponses
  • puis-je "git commit" un fichier et ignorer ses changements de contenu? 4 réponses

je dois ignorer les fichiers dans git! Je ne pense pas que ignorer est le bon mot en fait; je veux que les fichiers soient en git, mais je ne veux pas être en mesure d'y propager des changements. Cela peut sembler étrange à certains, mais il y a beaucoup, beaucoup de cas où j'ai besoin de cette fonctionnalité. La seule instance dont j'ai besoin pour le moment est quand j'utilise git avec un CMS; le CMS ne fonctionnera pas sans fichiers qu'il est en constante évolution, mais je ne veux pas de ceux fichiers jamais commis après la première validation. (Cela est très facile à faire avec SVN et Tortue).

WorkFlow:

  1. récupérez tous les fichiers nécessaires pour exécuter l'application.
  2. Ignore les répertoires / fichiers spécifiés lors de la propagation.

voici ce que j'ai essayé:

  1. .gitignore -- les fichiers n'entrent jamais dans git. Si le fichier est déjà en cache de la .gitignore le fichier ne fait rien.
  2. /.git/info/exclude -- même problème que .gitignore, mais seulement pour le local des pensions.
  3. Branching -- master = > LocalIgnores = > WorkingBranch. Lorsque l' La branche de travail est fusionnée avec master, les modifications faites de Les LocalIgnores finissent en maître. En outre, lorsque vous vérifiez l'un des nouvelles branches, les fichiers supprimés sont supprimés au lieu d'être ignorés.
  4. Fichier Tiers de la Structure-Tiers répertoire sur le racine noeud qui détient une copie de tous les fichiers tiers importants afin qu'ils puissent être copié dans le répertoire de travail qui utilise le .gitignore fichier. (Celui-ci fonctionne, mais il doit y avoir un plus facile / meilleur solurtion).
38
demandé sur Deduplicator 2011-08-16 00:46:56

2 réponses

voici ma réponse d'une question similaire .

git update-index devrait faire ce que vous voulez

cela indiquera à git que vous voulez commencer à ignorer les changements dans le fichier

git update-index --assume-unchanged path/to/file

quand vous voulez recommencer à suivre

git update-index --no-assume-unchanged path/to/file

92
répondu Andy 2017-05-23 11:54:20

une autre solution consiste à utiliser un crochet pre-commit . Voir git help hooks pour plus de détails.

  • c'est plus difficile à configurer: vous devez écrire un script shell pour exprimer exactement ce que vous voulez autoriser ou refuser, ce qui signifie probablement que vous devez avoir une assez bonne compréhension de git.

  • c'est plus permanent et flexible: avec des trucs comme git update-index vous pouvez accidentellement oublier de l'exécuter, etc. Mais une fois que vous définissez un crochet, vous n'aurez jamais à vous inquiéter de nouveau.

comme les autres astuces suggérées, les hooks ne se propagent pas automatiquement entre les dépôts, mais vous can vérifiez-les comme des fichiers réguliers et demandez à tout le monde de les relier dans .git/hooks .

2
répondu wjl 2011-08-17 14:25:49