Comment faire pour que Git ignore les fichiers sans les utiliser.gitignore?

en raison de contraintes externes bizarres Je ne peux pas modifier le .gitignore de mon dépôt. Y a-t-il une autre façon d'ignorer les fichiers et les répertoires que de modifier A.gitignore? Même si c'est une solution globale comme une configuration globale qui sera appliquée à tous mes dépôts.

94
demandé sur 17 of 26 2009-03-17 12:00:13

7 réponses

N'oubliez pas, selon gitignore , qu'il y a un ordre de priorité dans les différentes "ignorer les sources de modèle" que Git considèrent:

  • motifs lus à partir de la ligne de commande pour les commandes qui les soutiennent.
  • les Habitudes de lecture à partir d'un .fichier gitignore dans le même répertoire que le chemin, ou dans n'importe quel répertoire parent, avec des motifs dans les fichiers de niveau supérieur (jusqu'à la racine) étant dépassé par ceux de niveau inférieur fichiers vers le répertoire contenant le fichier.
  • Habitudes de lecture de $GIT_DIR/info/exclude .
  • Modèles de lire à partir du fichier spécifié par la variable de configuration core.excludesfile .

les deux derniers peuvent être une solution pour votre problème mais:

  • ils ne sont pas répliquées pour un lointain référentiel
  • ils peuvent avoir leurs habitudes dépassé par les autres sources

(Voir Aussi ce ainsi question )


les deux autres solutions impliquent la mise à jour de l'index ( git update-index ):

cependant, lors de votre départ une autre branche ou quand vous git pull , ce statut "ignore" pourrait être réinitialisé. D'où l'autre option:

le la différence entre les deux est expliquée dans " Git-différence entre assume-unchanged " et ' skip-worktree ' ".

137
répondu VonC 2017-05-23 12:02:50

Si vous pouvez modifier .git/info/exclude vous pouvez mettre les mêmes règles. Mais ce fichier est dans votre dossier local seulement.

100
répondu Ólafur Waage 2009-03-17 09:03:00

il y a trois façons de dire à GIT quels fichiers ignorer:

  • .gitignore files
  • $GIT_DIR/.git/info/exclure
  • Les fichiers
  • pointés via le core.excludesfile paramétrage

ces deux derniers points pourraient résoudre votre problème.

pour plus d'informations, voir gitignore(5) .

19
répondu Ferdinand Beyer 2009-03-17 09:19:23

si vous voulez juste avoir quelques fichiers locaux dans le dépôt et que l'emplacement du sous-répertoire est flexible, vous pouvez mettre vos fichiers dans tracked_dir1/tracked_dir2/untracked_dir/ et ensuite ajouter un tracked_dir1/tracked_dir2/untracked_dir/.gitignore avec des contenus comme:

*

i. e.

$ cat > tracked_dir1/tracked_dir2/untracked_dir/.gitignore
*
<Ctrl+D>
2
répondu David Winiecki 2015-03-05 20:43:06

Ignore les modifications locales aux fichiers suivis: git update-index --assume-unchanged my-file.php

ne plus ignorer les modifications locales de suivi des fichiers: git update-index --no-assume-unchanged my-file.php

source: git help update-index

--[no-]assume-unchanged
           ...
           This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked
           files (akin to what .gitignore does for untracked files). Git will fail (gracefully) in case it needs to
           modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is
           changed upstream, you will need to handle the situation manually.
1
répondu Elijah Lynn 2014-08-11 22:02:44

vous pouvez utiliser la méthode global gitignore au lieu de modifier celle du projet https://help.github.com/articles/ignoring-files/#create-a-global-gitignore

0
répondu frazras 2015-04-02 22:02:47

j'ai été dans des situations similaires, donc j'ajoute ma solution préférée que je ne vois pas mentionné. Le problème avec git update-index --assume-unchanged dans ce cas est que vous ne pouvez pas faire cela pour un fichier non suivi. Vous avez dit

Je ne peux pas modifier le .gitignore de mon dépôt.

je vais supposer que ce que vous voulez dire c'est que vous ne pouvez pas pousser les changements de .gitignore à l'origine. Si c'est le cas, ce que vous pouvez faire est d'ajouter le sans traces de fichier local .gitignore , puis faites git update-index --assume-unchanged .gitignore , de sorte que votre changement .gitignore n'est jamais poussé. Maintenant, vous ignorez le fichier (éventuellement) non suivi, et vous n'affectez pas le fichier distant .gitignore .

0
répondu Tony 2018-04-26 17:22:22