Je veux que git arrête de suivre mon journal de développement local (log / development.log) dans nos référentiels. Est-ce possible et comment puis-je le faire?
à partir de klemens: vous devez ajouter le fichier à votre .gitignorefichier quelque part au-dessus du fichier indésirable dans le dépôt. c'est à dire
$ cd $ cat >> .gitignore development.log Cd
de m. narebski: Vous devez ensuite supprimer le fichier du dépôt en exécutant " git rm --cached <file>puis en validant cette suppression"
Si vous espériez également donner l'impression que le dépôt n'a jamais suivi ce fichier, c'est beaucoup plus compliqué et fortement déconseillé car cela ne crée pas seulement de nouveaux commits pour chaque commit de votre historique, détruisant ainsi l'interopérabilité d'une manière désagréable. entre d'autres personnes qui ont cloné votre repo, mais cela laisse également chacun de ces commits non testé (en supposant que vous testiez vos commits avant de les faire).
Avec cette mise en garde à l'esprit, l'outil que vous recherchez si tel est votre objectif filter-branch. Le premier exemple fait exactement ce que je décris.
l'utilisation de git rm --cached semble non seulement l'avoir supprimé de ma branche, mais lorsque je tire vers un autre système, il supprime physiquement les fichiers sur ce système. Une idée de ce qui se passe là-bas?
biagidp
2
En réponse à ce qui précède: je crois que le problème était que je n'avais pas .gitignore en place sur le système alternatif avant d'extraire les modifications, donc la suppression a supprimé la copie locale. Au moins c'est la théorie
biagidp
53
Pour arrêter le suivi du fichier, utilisez simplement git rm --cached <filename>.
Mais comme indiqué par les autres ici, l'ajout du fichier à .gitignore peut vous empêcher de l'ajouter accidentellement plus tard.
Ce n'est que la moitié de la réponse. .gitignoreles entrées ne s'appliquent pas aux fichiers qui sont déjà suivis.
CB Bailey
10
La deuxième partie consiste à git rm --cached <file>procéder à cette suppression.
Jakub Narębski
1
Pourquoi n'y a-t-il pas une commande simple pour git pour réévaluer tous les fichiers actuellement suivis en fonction du fichier .gitignore actuel? ... ou est-ce que c'est beaucoup trop de bon sens? : p
Réponses:
Juste pour donner la réponse complète à la fois:
à partir de klemens: vous devez ajouter le fichier à votre
.gitignore
fichier quelque part au-dessus du fichier indésirable dans le dépôt. c'est à dire$ cd $ cat >> .gitignore development.log Cd
de m. narebski: Vous devez ensuite supprimer le fichier du dépôt en exécutant "
git rm --cached <file>
puis en validant cette suppression"Si vous espériez également donner l'impression que le dépôt n'a jamais suivi ce fichier, c'est beaucoup plus compliqué et fortement déconseillé car cela ne crée pas seulement de nouveaux commits pour chaque commit de votre historique, détruisant ainsi l'interopérabilité d'une manière désagréable. entre d'autres personnes qui ont cloné votre repo, mais cela laisse également chacun de ces commits non testé (en supposant que vous testiez vos commits avant de les faire).
Avec cette mise en garde à l'esprit, l'outil que vous recherchez si tel est votre objectif
filter-branch
. Le premier exemple fait exactement ce que je décris.la source
Pour arrêter le suivi du fichier, utilisez simplement
git rm --cached <filename>
.Mais comme indiqué par les autres ici, l'ajout du fichier à .gitignore peut vous empêcher de l'ajouter accidentellement plus tard.
la source
ajoutez le fichier gitignore.
voir http://git-scm.com/docs/gitignore
la source
.gitignore
les entrées ne s'appliquent pas aux fichiers qui sont déjà suivis.git rm --cached <file>
procéder à cette suppression.