432 votes

Conserver le fichier dans un dépôt Git, mais ne pas suivre les modifications

J'ai plusieurs fichiers dans un CodeIgniter site que je veux avoir dans le repo mais pas la trace de tous les changements.

Par exemple, le déploiement d'une nouvelle installation de ce cadre pour un nouveau client, je veux les fichiers suivants à être téléchargées (ils ont des valeurs par défaut CHANGEME) et j'ai juste à faire des changements spécifiques à ce client (base de données d'informations d'identification, adresse e-mail info, CSS personnalisé).

// the production config files i want the files but they need to be updated to specific client needs
application/config/production/config.php
application/config/production/database.php
application/config/production/tank_auth.php
// index page, defines the environment (production|development)
/index.php
// all of the css/js cache (keep the folder but not the contents)
/assets/cache/*
// production user based styling (color, fonts etc) needs to be updated specific to client needs
/assets/frontend/css/user/frontend-user.css

Actuellement, si je lance

git clone git@github.com:user123/myRepo.git httpdocs

et puis d'éditer les fichiers ci-dessus, tout est grand. Jusqu'à ce que je dégage un correctif ou d'un patch et d'exécuter git pull. Toutes mes modifications sont alors écrasées.

761voto

nasirkhan Points 597

Git a une solution différente pour le faire. Commencez par modifier le fichier que vous ne souhaitez pas suivre et utilisez la commande suivante:

 git update-index --assume-unchanged FILE_NAME
 

et si vous voulez suivre les modifications, utilisez cette commande:

 git update-index --no-assume-unchanged FILE_NAME
 

67voto

hookdump Points 283

Pour mes projets Code Igniter, je conserve les fichiers database.php.example et config.php.example dans le référentiel.

Ensuite, j'ajoute config.php et applications / config / database.php au fichier .gitignore .

Donc, finalement, lorsque je déploie, je peux copier les fichiers .example (vers config.php et database.php), les personnaliser, et GIT ne les suivra pas.

3voto

Michael Durrant Points 30342

Je les mettrais dans votre fichier .gitignore et les copierais simplement manuellement si nécessaire.

Ainsi, le nom de fichier squelette serait dans git, les noms de fichiers à ignorer ne seraient pas dans git (mais seraient dans .gitignore). De cette façon, lorsque l'étape manuelle consistant à les copier dans un "modèle" réel (meilleur nom que squelette peut-être) est terminée, ils sont immédiatement ignorés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X