Plus précisément, je maintiens un repository git de mes fichiers dot. J’ai récemment commencé à travailler sur une nouvelle machine et à cloner mon référentiel de la même manière.
Maintenant, je souhaite apporter des modifications à mes fichiers dot uniquement pour ce système. Ces modifications que je souhaite ignorer dans mon référentiel.
Les autres changements que je fais devraient continuer à être suivis et engagés.
Par exemple, dans mon fichier .gitconfig, j’ai un paramètre comme:
[push] default = simple
Maintenant, sur ma nouvelle machine, la version de git étant utilisée très ancienne. Il ne supporte toujours pas le réglage simple
pour pousser. Donc, je voudrais changer cela, mais seulement localement.
Cependant, si je modifie mon fichier .gitconfig, je voudrais en tenir compte. En tout cas je peux y arriver?
MODIFIER:
Je connais git update-index --assume-unchanged
. Le problème, c’est que git ne va plus suivre mon fichier, jusqu’à ce que je l’inverse. Et puis, il suivra tous les changements.
Je souhaite ignorer certains changements et suivre le rest.
Je ne crois pas qu’il y ait une commande spécifique qui «décodera» certaines modifications apscopes à un fichier. Cependant, il n’ya aucune raison de ne pas pouvoir créer une twig locale dans laquelle vous tirez des modifications de vos télécommandes, mais n’envoyez jamais de modifications.
Essayez d’utiliser cette commande:
git update-index --assume-unchanged FILENAME_TO_IGNORE
Pour l’inverser (si vous souhaitez l’engager), utilisez:
git update-index --no-assume-unchanged
MISE À JOUR :
Voici comment lister les fichiers ‘assumer inchangés’ dans le répertoire courant:
git ls-files -v | grep -E "^[az]"
Comme l’option -v
utilisera des lettres minuscules pour les fichiers “supposons inchangés”.
Voici une solution alternative à votre problème spécifique. Placez la configuration machine-config dans un fichier ~/.gitconfig.local
, puis placez-le dans votre fichier ~/.gitconfig
contrôlé ~/.gitconfig
:
[include] path = ~/.gitconfig.local
Cela dira à Git de traiter tout ce qu’il trouve dans ~/.gitconfig.local
comme s’il se ~/.gitconfig
dans ~/.gitconfig
. Oui, vous pouvez remplacer les parameters. Non, le fichier n’existe pas (Git ignorera silencieusement le paramètre s’il n’ya pas de ~/.gitconfig.local
).
Voir ici pour plus d’informations sur [include]
.
Je suis cette stratégie dans mes configurations pour Emacs, Zsh, Git, Tmux, etc., de sorte qu’ils soient personnalisables sans avoir à modifier les fichiers contrôlés par la version. Pour ce faire, j’ai init.local.el
, .zshrc.local
, .gitconfig.local
, .tmux.local.conf
, etc.
Comme suggéré par Peter, vous pouvez conserver ces modifications spécifiques à une machine dans une twig. Évidemment, vous devrez faire attention à séparer ssortingctement les modifications apscopes à ces fichiers spécifiques à la machine par la “ligne principale”. Il y a 2 façons de le faire: