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 associés (par exemple, des fichiers auxiliaires qui vivent à l'intérieur du référentiel mais qui sont spécifiques au flux de travail d'un utilisateur) doivent aller dans le $GIT_DIR/info/exclude
fichier.
Le .git/info/exclude
fichier a le même format que n'importe quel .gitignore
fichier. Une autre option consiste à définir core.excludesFile
le nom d'un fichier contenant des modèles globaux.
Remarque, si vous avez déjà des modifications non mises en scène, vous devez exécuter ce qui suit après avoir modifié vos modèles ignorés:
git update-index --assume-unchanged <file-list>
Remarque sur$GIT_DIR
: Ceci est une notation utilisée partout dans le manuel de 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 référentiel dans lequel vous vous trouvez, ce qui n'est probablement pas ce que vous voulez.
Edit : Une autre façon est d'utiliser:
git update-index --skip-worktree <file-list>
Inversez-le en:
git update-index --no-skip-worktree <file-list>
git update-index --assume-unchanged [<file>...]
après avoir ajouté le fichier d'exclusion. Les modifications ne seront pas prises en compte jusque-là.skip-worktree
serait probablement préférable àassume-unchanged
.Mise à jour :
git update-index --skip-worktree [<file>...]
pensez à utiliser à la place, merci @danShumway! Voir l'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 l'avons avec les modifications locales apportées aux fichiers de configuration), utilisez
git update-index --assume-unchanged [<file>...]
.la source
git update-index --assume-unchanged my-file.php
pour qu'il commence à être ignoré. Merci pour le conseil!git update-index --no-assume-unchanged my-file.php
.git/info/exclude
c'est ce que vous voulez (pour éviter de polluer le .gitignore souvent partagé et suivi)--assume-unchanged
avant de lire votre mise à jour . J'ai défait--no-assume-unchanged
et puis j'ai fait le--skip-worktree
... Suis-je en clair?Ajoutez les lignes suivantes à la section [alias] de votre fichier .gitconfig
Vous pouvez maintenant utiliser
git ignore my_file
pour ignorer les modifications apportées au fichier local etgit unignore my_file
pour arrêter d'ignorer les modifications.git ignored
répertorie les fichiers ignorés.Cette réponse a été glanée sur http://gitready.com/intermediate/2009/02/18/temporially-ignoring-files.html .
la source
Vous avez plusieurs options:
.gitignore
fichier sale (ou non engagé) dans votre répertoire de travail (ou appliquez-le automatiquement en utilisant topgit ou un autre outil de correctif de ce type).$GIT_DIR/info/exclude
fichier, si cela est spécifique à une arborescence.git config --global core.excludesfile ~/.gitignore
et ajoutez des modèles à votre~/.gitignore
. Cette option s'applique si vous souhaitez ignorer certains modèles dans tous les arbres. J'utilise ceci pour.pyc
et les.pyo
fichiers, par exemple.Assurez-vous également d'utiliser des modèles et de ne pas énumérer explicitement les fichiers, le cas échéant.
la source
git config --global
définir l'option globalement.Je pense que vous cherchez:
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!
pour annuler l'utilisation:
la source
--skip-worktree
et--assume-unchanged
à cette question SO--skipworktree
, devrais-je changer d'avis plus tard et vouloir recommencer le suivi du fichier?git update-index --no-skip-worktree <file>
Vous pouvez installer des alias git pour simplifier ce processus. Cela modifie le
[alias]
nœud de votre.gitconfig
fichier.Les raccourcis que cela installe pour vous sont les suivants:
git ignore config.xml
config.xml
- vous empêchant de commettre accidentellement ces changements.git unignore config.xml
config.xml
- vous permettant à nouveau de valider ces modifications.git ignored
Je les ai construits en me référant à la réponse de phatmann - qui présente une
--assume-unchanged
version de la même chose.La version que je présente utilise
--skip-worktree
pour ignorer les modifications locales. Voir la réponse de Borealid pour une explication complète de la différence, mais--skip-worktree
l'objectif principal est que les développeurs changent des fichiers sans risquer de valider leurs modifications .La
git ignored
commande présentée ici utilisegit ls-files -v
et filtre la liste pour afficher uniquement les entrées commençant par laS
balise. LaS
balise désigne un fichier dont le statut est "ignorer worktree". Pour une liste complète des états des fichiers affichés pargit ls-files
: consultez la documentation de l'-t
option activéegit ls-files
.la source
'!git ls-files -v | grep "^S"'
? La commande ne fonctionne pas pour moi avec elle là-bas .. et semble bien fonctionner avec elle supprimée.Expansion of alias 'ignored' failed; 'git' is not a git command
. C'est logique; sans le point d'exclamation: git alias votre commandegit git ls-files …
.git ignore <filename>
, il ne s'applique qu'à ce répertoire. Et lorsque vous souhaitez enfin apporter vos modifications à ce fichier et les valider et les envoyer à distance, utilisez simplement le bouton pratiquegit unignore <filename>
pour recommencer temporairement le suivi! Merci!Vous pouvez simplement ajouter un fichier .gitignore à votre répertoire personnel, c'est
$HOME/.gitignore
-à- dire ou~/.gitignore
. Dites ensuite à git d'utiliser ce fichier avec la commande:Il s'agit d'un fichier .gitignore normal qui fait référence à ce qui doit être ignoré. Comme il se trouve dans votre répertoire personnel, il ne s'applique qu'à vous et ne pollue aucun fichier .gitignore du projet.
J'utilise cette approche depuis des années avec d'excellents résultats.
la source
git check-ignore <file-name>
pour vérifier. LMK si cela fonctionne pour vous=
:git config --global core.excludesfile ~/.gitignore
.gitignore
fichier dans le répertoire personnel et j'ai dit à git d'utiliser ce fichier à la place, puis j'ai supprimé les fichiers que je voudrais décompresser localement. Cependant, après avoir poussé les modifications, le référentiel distant a également supprimé ces fichiers. Est-ce que j'ai fait quelque chose de mal?.gitignore
consiste à ignorer les fichiers qui existent dans votre répertoire local. Ce que vous auriez dû faire est de lesgit rm --cached
retirer du dépôt mais de les laisser dans votre section locale. Vous devriez pouvoir revenir à votre commit précédent avec quelque chose commegit reset --soft HEAD^
annuler ce commit et récupérer vos fichiers. C'est la beauté de Git: tout est toujours là dans votre histoire Git.Afin d'ignorer les fichiers non suivis, en particulier s'ils se trouvent dans (quelques) dossiers qui ne sont pas suivis, une solution simple consiste à ajouter un
.gitignore
fichier à chaque dossier non suivi et à entrer dans une seule ligne contenant*
suivie d'une nouvelle ligne. C'est une solution vraiment simple et directe si les fichiers non suivis se trouvent dans quelques dossiers. Pour moi, tous les fichiers provenaient d'un seul dossier non suivivendor
et ce qui précède a juste fonctionné.la source
Si votre dépôt n'a pas déjà de fichier .gitignore, alors une solution simple consiste à créer un fichier .gitignore, et à y ajouter
.gitignore
à la liste des fichiers à ignorer.la source
.gitignore
dépôt a un fichier partagé en haut. Mais mes fichiers sales sont dans un dossier profond, donc j'ai juste ajouté le mien à.gitignore
côté d'eux. +1