J'ai plusieurs fichiers dans un site CodeIgniter que je souhaiterai avoir dans le référentiel mais sans suivre les modifications.
Par exemple, je déploie une nouvelle installation de ce framework sur un nouveau client, je souhaite que les fichiers suivants soient téléchargés (ils ont des valeurs par défaut CHANGEME) et je dois juste apporter des modifications spécifiques à ce client (informations d'identification de la base de données, informations d'adresse e-mail, 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 cours
git clone [email protected]:user123/myRepo.git httpdocs
puis éditez les fichiers ci-dessus, tout va bien. Jusqu'à ce que je publie un correctif ou un correctif et que j'exécute git pull
. Toutes mes modifications sont alors écrasées.
Réponses:
git a une solution différente pour ce faire. Modifiez d'abord le fichier dont vous ne souhaitez pas le suivi et utilisez la commande suivante:
et si vous souhaitez suivre à nouveau les modifications, utilisez cette commande:
documentation git-update-index
la source
--skip-worktree
option est mieux adaptée à ce travail que--assume-unchanged
.Pour extraire une réponse des commentaires d'une autre réponse:
$ git update-index --skip-worktree FILENAME
Semble être une meilleure option que
--assume-unchanged
Vous pouvez en lire plus à ce sujet ici: Git - Différence entre 'assume-unchanged' et 'skip-worktree'
la source
Pour mes projets Code Igniter, je garde 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, enfin, lorsque je déploie, je peux copier les fichiers .example (dans config.php et database.php), les personnaliser et ils ne seront pas suivis par GIT.
la source
Je les mettrais dans votre
.gitignore
dossier et les copierais juste manuellement au besoin.Ainsi, le nom de fichier squelette serait dans git, les noms de fichiers ignorés ne seraient pas dans git (mais seraient dans .gitignore). De cette façon, lorsque l'étape manuelle pour les copier dans «réel» à partir de «modèle» (meilleur nom que squelette peut-être) est terminée, ils sont immédiatement ignorés.
la source
git rm <file>
. Le but est IE: un fichier config.php. Je veux garder le fichier de configuration, mais je ne veux évidemment pas suivre les informations d'identification de la base de données de client en client car elles sont différentes.git add file1
puis modifiez votre.gitignore
fichier. Le fichier validé y restera et ne sera pas mis à jour. Ou: Vous pouvez ajouter le fichier à.gitignore
puis l'ajouter avecgit add --force file1
pour forcer le fichier. Vous pouvez utiliser la 2e option chaque fois que vous devez écraser le fichierLes réponses données résolvent le problème seulement partiellement, mais introduisent encore plus de problèmes.
J'avais besoin de conserver le fichier "Web.Local.config". La seule solution qui a fonctionné pour moi était de:
1. Exclure le fichier du projet
2. Créez une copie distincte du fichier en tant que Web.LocalTemplate.config
Maintenant que "Web.LocalTemplate.config" est suivi par Git, tous les développeurs peuvent l'utiliser comme point de départ. Cependant, le "Web.Local.config", ne faisant pas partie du projet sera automatiquement ignoré.
la source
git update-index --skip-worktree FILENAME
ne résout-on que partiellement votre problème, ou même en ajoute-t-il plus? Cela résout exactement ce que vous essayez de faire. Est-ce que tu l'as essayé?