J'ai ajouté la ligne suivante à .gitignore
:
sites/default/settings.php
mais quand je tape, git status
il montre le fichier en tant que fichier non mis en scène.
Quel est le problème? Tous les autres modèles fonctionnent bien.
J'ai ajouté la ligne suivante à .gitignore
:
sites/default/settings.php
mais quand je tape, git status
il montre le fichier en tant que fichier non mis en scène.
Quel est le problème? Tous les autres modèles fonctionnent bien.
Réponses:
Assurez-vous que votre se .gitignore
trouve à la racine du répertoire de travail, et dans ce répertoire, exécutez git status
et copiez le chemin d'accès au fichier à partir de la sortie d'état et collez-le dans le fichier .gitignore
.
Si cela ne fonctionne pas, il est probable que votre fichier soit déjà suivi par Git. Vous pouvez le confirmer via la sortie de git status
. Si le fichier n'est pas répertorié dans la section «Fichiers non suivis» , alors il est déjà suivi par Git et il ignorera la règle du .gitignore
fichier.
La raison d'ignorer les fichiers dans Git est qu'ils ne seront pas ajoutés au référentiel. Si vous avez précédemment ajouté un fichier que vous souhaitez ignorer, il sera suivi par Git et les règles d'ignorance correspondant seront ignorées. Git fait cela puisque le fichier fait déjà partie du référentiel.
Pour ignorer réellement le fichier, vous devez le décompresser et le supprimer du référentiel. Vous pouvez le faire en utilisant git rm --cached sites/default/settings.php
. Cela supprime le fichier du référentiel sans supprimer physiquement le fichier (c'est ce que --cached
fait). Après avoir validé cette modification, le fichier sera supprimé du référentiel et l'ignorer devrait fonctionner correctement.
.git
se trouve le répertoire et qui est lui-même la racine du référentiel. Comme lorsque vous cloner un dépôt pour /xy/
ensuite /xy/
est votre répertoire de travail avec l' /xy/.git/
intérieur.
git add .
après git rm --cached
pour reconstruire correctement l'index.
Je rencontre ceci, c'est une vieille question, mais je veux que ce fichier soit suivi mais ne pas le suivre sur certaines copies de travail, pour ce faire, vous pouvez exécuter
git update-index --assume-unchanged sites/default/settings.php
git update-index --skip-worktree filename
.gitignore ignorera uniquement les fichiers que vous n'avez pas encore ajoutés à votre référentiel.
Si vous avez fait un git add .
et que le fichier a été ajouté à l'index, .gitignore ne vous aidera pas. Vous devrez faire git rm sites/default/settings.php
pour le supprimer, puis il sera ignoré.
git rm
devrait faire cela, mais il peut vous demander d'utiliser l'option -f qui le supprimerait du répertoire de travail. Je n'ai pas compris cela à part faire une copie du fichier, faire git rm -f
puis restaurer la copie.
Veuillez utiliser cette commande
git rm -rf --cached .
git add .
Parfois, les fichiers .gitignore ne fonctionnent pas même s'ils sont corrects. La raison pour laquelle Git ignore les fichiers est qu'ils ne sont pas ajoutés au référentiel. Si vous avez ajouté un fichier que vous souhaitez ignorer auparavant, il sera suivi par Git et toute règle de correspondance ignorée sera ignorée. Git fait cela car le fichier fait déjà partie du référentiel.
J'ai eu le même problème. Les fichiers définis dans .gitingore
où sont répertoriés comme fichiers non suivis lors de l'exécution git status
.
La raison en était que le .gitignore
fichier était enregistré en UTF-16LE
encodage et non en UTF8
encodage.
Après avoir changé l'encodage du .gitignore
fichier, UTF8
cela a fonctionné pour moi.
Il existe des instances, par exemple des fichiers de configuration d'application, que je souhaite suivre dans git (donc .gitignore ne fonctionnera pas), mais que je dois modifier pour les paramètres locaux. Je ne veux pas que git gère ces fichiers ou les affiche comme modifiés. Pour ce faire, j'utilise skip-worktree:
git update-index --skip-worktree path/to/file
Vous pouvez confirmer que les fichiers sont ignorés en répertoriant les fichiers et en vérifiant les lignes commençant par S pour ignorer
git ls-files -v | grep ^S
Si à l'avenir vous souhaitez que git gère à nouveau le fichier localement, exécutez simplement:
git update-index --no-skip-worktree path/to/file
Mescalito ci-dessus avait une excellente réponse, qui m'a conduit sur la bonne voie mais
git update-index --assume-unchanged file / vers / ignore.php
A un contrat avec git dans lequel: l'utilisateur promet de ne pas changer le fichier et permet à Git de supposer que le fichier de l'arbre de travail correspond à ce qui est enregistré dans l'index.
Cependant, je change le contenu des fichiers, donc dans mon cas --skip-worktree est la meilleure option.
Le site Web de Toshiharu Nishina a fourni une excellente explication de skip-worktree vs assume-inchangé: ignorer les fichiers déjà gérés avec Git localement
Ce que j'ai fait pour ignorer le fichier settings.php avec succès:
Je pense que s'il y a le fichier commis sur Git, ignorer ne fonctionne pas comme prévu. Supprimez simplement le fichier et validez. Ensuite, il ignorera.
Une autre raison possible - quelques instances de clients git s'exécutant en même temps . Par exemple "git shell" + "GitHub Desktop", etc.
Cela m'est arrivé, j'utilisais "GitHub Desktop" comme client principal et il ignorait certains nouveaux paramètres .gitignore: commit après commit:
Raison : l'éditeur Visual Studio Code fonctionnait en arrière-plan avec le même référentiel ouvert. VS Code a un contrôle git intégré, ce qui crée des conflits.
Solution : vérifiez plusieurs clients git cachés et n'utilisez qu'un seul client git à la fois, en particulier lors de la suppression du cache git.
Assurez-vous que le .gitignore n'a pas d'extension !! Cela ne peut pas être .gitignore.txt, dans Windows, nommez simplement le fichier .gitignore. et cela fonctionnera.
J'ai juste essayé cela avec git 1.7.3.1, et j'ai donné une structure comme:
repo/.git/
repo/.gitignore
repo/sites/default/settings.php
où repo
se trouve donc la "racine" mentionnée ci-dessus (je l'appellerais la racine de votre arbre de travail), et .gitignore
contient seulement sites/default/settings.php
, l'ignorer fonctionne pour moi (et peu importe si elle .gitignore
est ajoutée au dépôt ou non). Cela correspond-il à la mise en page de votre dépôt? Sinon, qu'est-ce qui diffère?
Juste au cas où quelqu'un à l'avenir aurait le même problème que moi:
Si vous utilisez le
*
!/**/
!*.*
astuce pour supprimer les fichiers binaires sans extension, assurez-vous que TOUTES les autres lignes gitignore sont CI-DESSOUS. Git lira à partir de .gitignore depuis le haut, donc même si j'avais 'test.go' dans mon gitignore, il était le premier dans le fichier, et est devenu 'non ignoré' après
!*.*
J'ai essayé la plupart des commandes ci-dessus sur le terminal VS Code et j'ai eu des erreurs comme:
fatal: pathspec '[dir]/[file]' did not match any files
J'ai ouvert le projet sur GitHub Desktop et je l'ai ignoré à partir de là et cela a fonctionné.
Une chose qui, je pense, a été manquée dans les excellentes réponses ici est l'existence si another *.gitignore* or multiple of them.
Dans un cas, j'avais cloné un dépôt et je ne pouvais pas comprendre pourquoi un fichier "ignoré" était à nouveau ajouté lors de l'exécution de git add . Il s'est avéré qu'il y avait un autre .gitignore dans un sous-dossier et qui remplaçait celui du dossier racine.
/.gitignore
/some-folder/.gitignore
/some-folder/this-file-keeps-getting-staged
le
root /.gitignore
ignorait ce-fichier-continue-d'être mis en scène
le
/some-folder/.gitignore
n'avait pas de spécification pour ignorer le fichier "ce-fichier-continue-à-être".
Et d'où le problème.
L'une des choses est de simplement rechercher plusieurs fichiers .gitignore dans la hiérarchie. Et déterminez les règles telles qu'elles s'appliquent.