94 votes

Pourquoi mon .gitignore mis à jour ne fonctionne-t-il pas pour les fichiers qui sont suivis ?

J'ai le fichier .gitignore suivant

# file named .gitignore

system/application/config/database.php
system/application/config/config.php
system/logs
modules/recaptcha/config/*

Cependant, lorsque j'ajoute des modifications dans config et recapcha.php, git status m'avertit comme suit. Lorsque j'ajoute des modifications à database.php, il ne les affiche pas dans le statut

shin@shin-Latitude-E5420:/var/www/myapp$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#   modified:   modules/recaptcha/config/recaptcha.php
#   modified:   system/application/config/config.php
#
no changes added to commit (use "git add" and/or "git commit -a")

Comment puis-je résoudre ce problème?

J'utilise git version 1.7.5.1 sur Ubuntu 11.04

0 votes

144voto

DipSwitch Points 1774

Les fichiers sont déjà stockés dans votre arborescence de validation locale. Vous devrez d'abord les supprimer du dépôt. Cela peut être fait via :

git rm --cached system/application/config/config.php modules/recaptcha/config/recaptcha.php

Après cela, vous devrez faire un autre commit et vous serez prêt à partir.

5 votes

Merci. git rm a supprimé un fichier. Mais en ajoutant --cached a résolu le problème. Que dois-je faire si je veux le rajouter? Est-ce que je dois simplement le retirer du fichier .gitignore?

1 votes

Super. Merci

130voto

Nanda Gopal Points 1042

Faites ce qui suit pour déclencher le gitignore

Étape 1: Validez tous vos changements en attente dans le dépôt que vous souhaitez corriger et poussez-les.

Étape 2: Maintenant, vous devez supprimer tout de l'index git afin de rafraîchir votre dépôt git. Ceci est sécuritaire. Utilisez cette commande:

git rm -r --cached .

Étape 3: Maintenant, vous devez ajouter de nouveau tout dans le dépôt, ce qui peut être fait en utilisant cette commande:

git add .

Étape 4: Enfin, vous devez valider ces changements en utilisant cette commande:

git commit -m "Problème de gitignore résolu"

12voto

Eric Hogue Points 2655

Si votre fichier est déjà dans git avant d'ajouter le répertoire à .gitignore, git continuera à le suivre. Si vous ne le voulez pas, faites un "git rm" pour le supprimer en premier.

5 votes

Ne va pas git rm (sans --cached) aussi supprimer le fichier ? Ou est-ce qu'il le laisse car il est répertorié dans le fichier .gitignore ?

0 votes

Vous devriez probablement le sauvegarder quelque part avant. Après avoir supprimé et commité, recopiez-le. Mais je ne connaissais pas l'option --cached, je vais y jeter un œil.

3voto

sehe Points 123151

Je suppose que ton .gitignore n'est pas à la racine de ton arborescence de travail.

Si tu mets un .gitignore dans le même répertoire que system/application/config/config.php tu peux simplement utiliser

echo config.php >> system/application/config/.gitignore

Les chemins sont relatifs au répertoire courant (ou : .gitignore est un fichier d'exclusion/inclusion par répertoire).

Voir man git-ignore

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