Question Comment configurer git pour ignorer certains fichiers localement?


Puis-je ignorer les fichiers localement sans polluer la configuration git globale pour tout le monde? J'ai récupéré des fichiers qui sont des spams dans mon statut git mais je ne veux pas commettre de changements de configuration git pour chaque petit fichier aléatoire non-tracé que j'ai dans mes branches locales.


952
2017-11-18 01:36


origine


Réponses:


De la documentation Git pertinente:

Les modèles qui sont spécifiques à un référentiel particulier mais qui n'ont pas besoin d'être partagés avec d'autres référentiels connexes (par exemple, les fichiers auxiliaires qui résident dans le référentiel mais qui sont spécifiques au flux de travail d'un utilisateur) doivent être placés dans le référentiel. $GIT_DIR/info/exclude fichier.

le .git/info/exclude fichier a le même format que tout .gitignore fichier. Une autre option consiste à définir core.excludesFile au nom d'un fichier contenant des modèles globaux.

Notez que si vous avez déjà des modifications non planifiées, vous devez exécuter ce qui suit après avoir modifié vos patterns ignorés:

git update-index --assume-unchanged [<file>...]

Note sur $GIT_DIR: Ceci est une notation utilisée partout le manuel git simplement pour indiquer le chemin vers le dépôt git. Si la variable d'environnement est définie, elle remplacera l'emplacement du repo dans lequel vous vous trouvez, ce qui n'est probablement pas ce que vous voulez.


1298
2017-11-18 01:38



Mettre à jour: Envisagez d'utiliser git update-index --skip-worktree [<file>...] Au lieu de cela, merci @danShumway! Voir L'explication de Borealid sur la différence des deux options.


Vieille réponse:

Si vous devez ignorer les modifications locales des fichiers suivis (nous avons cela avec des modifications locales aux fichiers de configuration), utilisez git update-index --assume-unchanged [<file>...].


374
2018-01-22 15:39



Ajoutez les lignes suivantes à la section [alias] de votre fichier .gitconfig

ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"

Maintenant vous pouvez utiliser git ignore my_file ignorer les modifications apportées au fichier local, et git unignore my_file arrêter d'ignorer les changements. git ignored répertorie les fichiers ignorés.

Cette réponse a été glanée de http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html.


128
2017-08-19 15:21



Vous avez plusieurs options:

  • Laisser un sale (ou non engagé) .gitignore fichier dans votre répertoire de travail (ou l'appliquer automatiquement en utilisant topgit ou un autre outil de patch de ce type).
  • Mettez les exclus dans votre $GIT_DIR/info/exclude fichier, si cela est spécifique à un arbre.
  • Courir git config --global core.excludesfile ~/.gitignore et ajouter des motifs à votre ~/.gitignore. Cette option s'applique si vous souhaitez ignorer certains modèles tout des arbres. Je l'utilise pour .pyc et .pyo fichiers, par exemple.

Assurez-vous également que vous utilisez des modèles et n'énumérez pas explicitement les fichiers, le cas échéant.


89
2017-11-18 01:45



Je pense que vous cherchez:

git update-index --skip-worktree FILENAME

qui ignorent les modifications apportées localement

Voici http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ plus d'explications sur ces solutions!


39
2017-07-11 06:38



Vous pouvez en installer quelques-uns alias git pour rendre ce processus plus simple. Cela modifie le [alias] noeud de votre .gitconfig fichier.

git config --global alias.ignore 'update-index --skip-worktree'
git config --global alias.unignore 'update-index --no-skip-worktree'
git config --global alias.ignored '!git ls-files -v | grep "^S"'

Les raccourcis que cela installe pour vous sont les suivants:

  • git ignore config.xml
    • git va prétendre qu'il ne voit aucun changement sur config.xml - vous empêchant de commettre accidentellement ces changements.
  • git unignore config.xml
    • git va reprendre en reconnaissant vos changements à config.xml - vous permettant à nouveau de valider ces changements.
  • git ignored
    • git listera tous les fichiers que vous "ignorez" de la manière décrite ci-dessus.

J'ai construit ces en se référant à La réponse de Phatmann - qui présente un --assume-unchanged version de la même chose.

La version que je présente utilise --skip-worktree pour ignorer les changements locaux. Voir La réponse de Borealid pour une explication complète de la différence, mais essentiellement --skip-worktreele but est pour que les développeurs puissent changer de fichiers sans risquer de changer leurs fichiers.

le git ignored commande présentée ici utilise git ls-files -vet filtre la liste pour afficher uniquement les entrées commençant par S marque. le S tag désigne un fichier dont l'état est "skip worktree". Pour une liste complète des statuts de fichiers affichés par git ls-files: voir la documentation pour le -t option sur git ls-files.


30
2017-08-22 18:27



Vous pouvez simplement ajouter un fichier .gitignore à votre répertoire personnel, par exemple. $HOME/.gitignore ou ~/.gitignore. Puis dites à git d'utiliser ce fichier avec la commande:

git config --global core.excludesfile ~/.gitignore

C'est un fichier .gitignore normal qui fait référence à Git pour décider quoi ignorer. Comme il se trouve dans votre répertoire personnel, il s'applique uniquement à vous et ne pollue aucun fichier .gitignore de projet.

J'utilise cette approche depuis des années avec d'excellents résultats.


22
2017-10-14 12:58



N'oubliez pas de reconnaître un fait avec @joss ​​lee réponse.

    git update-index --assume-unchanged directory/

Notez la barre oblique (/) à la fin.


2
2018-02-07 13:26