Git ignore les modifications locales apscopes à des parties de fichiers suivis

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:

  1. Continuez à changer la twig chaque fois que vous changez la ligne principale (ce serait ma préférence)
  2. Continuez à fusionner les modifications de la ligne principale dans la twig (mais ne fusionnez évidemment jamais dans l’autre sens)