J'ai créé une version par défaut d'un fichier inclus dans un dépôt git. Il est important que lorsque quelqu'un clone le dépôt, il obtienne une copie de ce fichier. Cependant, j'aimerais configurer git de manière à ce qu'il ignore les modifications apportées ultérieurement à ce fichier. .gitignore
ne fonctionne que sur les fichiers non suivis.
Ma motivation est que ce fichier contient des informations spécifiques à la machine. J'aimerais fournir des valeurs par défaut, tout en permettant aux gens d'effectuer des changements locaux qui ne seront pas repoussés vers le dépôt d'origine, créant des conflits de fusion lorsque nous tirons de nouveaux changements.
Nous sommes généralement assez paresseux et utilisons git add .
beaucoup, donc je suis sûr que si je ne peux pas dire à git d'ignorer ce fichier, les modifications de celui-ci finiront par être validées et poussées.
Pour résumer,
- Je voudrais créer un fichier, l'appeler
default_values.txt
qui est ajouté à mon dépôt git et qui est inclus lorsque quelqu'un clone ce dépôt. -
git add .
ne doit pas ajouterdefault_values.txt
à l'engagement. - Ce comportement doit être transmis à tous les clones du référentiel.
2 votes
Pouvez-vous utiliser les hooks git pour avoir un hook pre-commit qui annulerait un commit si le fichier modifié est default_values.txt (disons) ?
2 votes
Les puristes du Git diraient qu'il ne faut pas être paresseux et utiliser correctement la zone de transit, c'est à cela qu'elle sert.
1 votes
Les puristes de Git diraient d'utiliser smudge/clean scripts. C'est la solution la plus maintenable.
1 votes
Xint0 : c'est vrai. Mais comment empêcher d'autres personnes de s'enregistrer accidentellement ?
0 votes
Duplicata possible de Transmission des fichiers de configuration spécifiques à la machine
0 votes
C'est drôle. La deuxième réponse la plus votée a un commentaire du PO disant "ils n'ont pas accepté parce que vous ne pouvez pas transmettre le comportement à d'autres clones", mais ensuite la réponse acceptée a exactement la même commande - et le même problème.