Puis-je ignorer les fichiers localement sans polluer la configuration globale git pour tous les autres? J'ai des fichiers non suivis qui sont du spam dans mon statut de git mais je ne veux pas valider les modifications apportées à la configuration de git pour chaque petit fichier aléatoire non traqué que j'ai dans mes branches locales.
De la documentation Git appropriée :
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 associés (par exemple, des fichiers auxiliaires résidant dans le référentiel mais spécifiques au flux de travail d'un utilisateur) doivent être placés dans le fichier
$GIT_DIR/info/exclude
.
Le fichier .git/info/exclude
a le même format que n’importe quel fichier .gitignore
. Une autre option consiste à définir core.excludesFile
sur le nom d'un fichier contenant des modèles globaux.
Notez que si vous avez déjà des modifications non mises en scène, vous devez exécuter les opérations suivantes après la modification de vos modèles 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 d'accès au référentiel git. Si la variable d'environnement est définie, elle remplacera l'emplacement du référentiel dans lequel vous vous trouvez, ce qui n'est probablement pas ce que vous voulez.
Mise à jour : envisagez d'utiliser git update-index --skip-worktree [<file>...]
à la place, merci @danShumway! Voir explication de Borealid sur la différence des deux options .
Ancienne réponse:
Si vous devez ignorer les modifications locales apportées aux fichiers suivis (nous en avons pour les modifications locales des fichiers de configuration), utilisez git update-index --assume-unchanged [<file>...]
.
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:]]"
Vous pouvez maintenant utiliser git ignore my_file
pour ignorer les modifications apportées au fichier local et git unignore my_file
pour ne plus ignorer les modifications. git ignored
liste les fichiers ignorés.
Cette réponse a été obtenue à partir de http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html .
Vous avez plusieurs options:
.gitignore
dans votre répertoire de travail (ou appliquez-le automatiquement à l'aide de topgit ou d'un autre outil de type correctif).$GIT_DIR/info/exclude
, si cela est spécifique à un arbre.git config --global core.excludesfile ~/.gitignore
et ajoutez des motifs à votre ~/.gitignore
. Cette option s'applique si vous souhaitez ignorer certains modèles dans tous les arbres . J'utilise ceci pour les fichiers .pyc
et .pyo
, par exemple.Assurez-vous également que vous utilisez des modèles et ne pas énumérer explicitement les fichiers, le cas échéant.
Je pense que vous recherchez:
git update-index --skip-worktree FILENAME
qui ignorent les changements faits localement
Voici http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ plus d'explications sur ces solutions!
Vous pouvez installer des git aliases pour simplifier ce processus. Ceci édite le noeud _[alias]
_ de votre fichier _.gitconfig
_.
_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 installés par vous sont les suivants:
git ignore config.xml
_ config.xml
_ - vous empêchant de valider ces changements par inadvertance.git unignore config.xml
_ config.xml
_ - vous permettant ainsi de valider à nouveau ces modifications.git ignored
_ J'ai construit ceux-ci en faisant référence à réponse de phatmann - qui présente une version _--assume-unchanged
_ de la même chose.
La version que je présente utilise _--skip-worktree
_ pour ignorer les modifications locales. Voir réponse de Borealid pour une explication complète de la différence, mais le but principal de _--skip-worktree
_ est de permettre aux développeurs de modifier des fichiers sans risquer de les valider .
La commande _git ignored
_ présentée ici utilise _git ls-files -v
_ et filtre la liste pour afficher uniquement les entrées commençant par la balise S
. La balise S
indique un fichier dont le statut est "ignorer la structure de travail". Pour obtenir la liste complète des statuts de fichier affichés par _git ls-files
_: voir la documentation de l'option _-t
_ sur git ls-files
.
Vous pouvez simplement ajouter un fichier .gitignore à votre répertoire personnel, à savoir $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 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 du projet.
J'utilise cette approche depuis des années avec d'excellents résultats.
Si votre référentiel ne dispose pas déjà d'un fichier .gitignore, une solution simple consiste à créer un fichier .gitignore et à y ajouter .gitignore
à la liste des fichiers à ignorer.