Impossible d'ignorer .idea / workspace.xml - continue d'apparaître

237

En utilisant PHPStorm, j'essaie d'ignorer le workspace.xmlqui apparaît à chaque fois que j'essaie de faire un git commit.

Mes .gitignorelooks:

/.idea/
.idea/workspace.xml

Parce qu'à un moment où le fichier a été validé, j'ai également exécuté:

git rm --cached .idea/workspace.xml puis commis l'enlèvement, poussé à un repo nu.

Mais le fichier réapparaît plus tard lorsque je modifie le projet.

Des idées sur ce qui me manque?

Valentin Despa
la source
J'ai tout essayé ci-dessous, ajouté à gitignore, mais il continue de revenir, ignorant gitignore.
Olaf
Ressemble à cette même question . Découvrez-le et voyez ...
Luca Ballore
Consultez ce lien: stackoverflow.com/questions/8156299/… . Ressemble à votre même problème.
Luca Ballore

Réponses:

289

J'étais confronté au même problème, et cela m'a poussé vers le haut du mur. Le problème a fini par être que le dossier .idea avait déjà été validé dans le référentiel précédemment, et qu'ils étaient donc suivis par git, que vous les ayez ou non ignorés. Je recommanderais ce qui suit, après avoir fermé RubyMine / IntelliJ ou tout autre IDE que vous utilisez:

mv .idea ../.idea_backup
rm .idea # in case you forgot to close your IDE
git rm -r .idea 
git commit -m "Remove .idea from repo"
mv ../.idea_backup .idea

Ensuite, assurez-vous d'ignorer .idea dans votre .gitignore

Bien qu'il soit suffisant de l'ignorer dans le .gitignore du référentiel, je suggérerais que vous ignoriez les fichiers dot de votre IDE globalement.

Sinon, vous devrez l'ajouter à chaque .gitgnore pour chaque projet sur lequel vous travaillez. De plus, si vous collaborez avec d'autres personnes, il est préférable de ne pas polluer le .gitignore du projet avec une configuration privée qui n'est pas spécifique au code source du projet.

amerdidit
la source
La dernière commande devrait être "mv ../.idea_backup .idea" au lieu de "git mv ../.idea_backup .idea" pour éviter l'erreur git
Leo Caseiro
2
Je dois faire git rm .ideaau lieu de git add .ideafaire le travail
Serge
J'ai également changé addpour, rmmais dans mon cas, j'ai dû ajouter -régalement pour supprimer récursivement tout. git rm -r .idea
jmendiola
2
Wow merci!! J'ai essayé un million de façons différentes en vain. CECI est la bonne approche étape par étape. La principale différence qui me manquait était de s'assurer que mon IDE était fermé - ne manquez pas cette étape! Excellente réponse :)
Jonny Asmar
Merci! beaucoup, beaucoup de temps passé à chercher des solutions de travail et essayé plusieurs. C'est le moyen le plus simple de le faire.
edepe
83

J'ai eu ce problème tout à l'heure, je devais le faire git rm -f .idea/workspace.xml maintenant, il semble avoir disparu (j'ai aussi dû le mettre .gitignore)

arcanine
la source
7
J'ajouterais également, uniquement pour des raisons de précision, que Idea intellij devrait être fermé lors de ces étapes.
LoreV
29

J'ai dû:

  • supprimer le fichier de git
  • pousser le commit sur toutes les télécommandes
  • assurez-vous que tous les autres committers sont mis à jour à distance

Commandes

git rm -f .idea/workspace.xml
git remote | xargs -L1 git push --all

Les autres committers devraient s'exécuter

git pull
Valentin Despa
la source
7
Bien que je sois heureux de cette réponse, je ne peux m'empêcher de penser qu'il serait plus utile si les instructions sur la façon d'accomplir les étapes (par exemple, les directives de ligne de commande) étaient incluses.
flyingace
Consultez ce lien: stackoverflow.com/questions/8156299/… . Ressemble exactement à votre même problème.
Luca Ballore
arrêter IDE \ n git rm -f .idea / workspace.xml \ n git commit -m "supprimer workspace.xml" \ n modifier .gitignore pour exclure workspace.xml \ n ouvrir IDE
Srneczek
27

Dans le même répertoire où vous voyez le fichier apparaître, faites:

  • rm .idea/workspace.xml
  • git rm -f .idea/workspace.xml (as suggested by chris vdp)
  • vi .gitignore
  • i(à modifier), ajouter .idea/workspace.xmldans l' une des lignes, Esc,:wq

Tu devrais être bon maintenant

Melski
la source
2
Ou, pour ajouter la ligne à .gitignore, tapez simplement echo .idea/workspace.xml>>.gitignore. Vous n'avez pas besoin d'ouvrir vi pour tout. Alternativement, et ce que je ferais, c'est d'avoir un fichier .gitignore séparé dans le répertoire .idea:echo workspace.xml>>.idea/.gitignore
Godsmith
17

Pour supprimer .idea/complètement de git sans affecter votre configuration IDE, vous pouvez simplement faire:

git rm -r --cached '.idea/'
echo .idea >> .gitignore
git commit -am "removed .idea/ directory"
Johnny Willer
la source
6

Si vous avez plusieurs projets dans votre dépôt git, .idea/workspace.xmlne correspondra à aucun fichier.

Au lieu de cela, procédez comme suit:

$ git rm -f **/.idea/workspace.xml

Et faites ressembler votre .gitignore à ceci:

# User-specific stuff:
**/.idea/workspace.xml
**/.idea/tasks.xml
**/.idea/dictionaries
**/.idea/vcs.xml
**/.idea/jsLibraryMappings.xml

# Sensitive or high-churn files:
**/.idea/dataSources.ids
**/.idea/dataSources.xml
**/.idea/dataSources.local.xml
**/.idea/sqlDataSources.xml
**/.idea/dynamic.xml
**/.idea/uiDesigner.xml

## File-based project format:
*.iws

# IntelliJ
/out/
kerner1000
la source
5

Dites simplement à git de ne pas supposer qu'il a changé, peu importe quoi:

git update-index --assume-unchanged src/file/to/ignore

oui, vous pouvez supprimer les fichiers du référentiel git. Mais si votre équipe utilise tous le même IDE ou si vous êtes seul, vous ne voudrez probablement pas le faire. Pour vous, vous voulez avoir un bon point de départ pour reprendre le travail, pour vos coéquipiers également.

Toskan
la source
0

La façon dont je l'ai fait dans Android Studio qui est également basé sur IntelliJ était comme ça. Dans la boîte de dialogue de validation, j'ai annulé la modification de workspace.xml, puis elle a été déplacée vers un fichier non versionné. Après cela, j'ai supprimé cela de la boîte de dialogue de validation. Maintenant, il n'apparaîtra pas dans la liste des modifications. Notez que mon gitignore incluait déjà .idea / workspace.xml

PK Gupta
la source
0

Étant donné que dans mon cas, j'effectuais une première validation d'un projet, la suppression .gitet les .ideadossiers, puis la réinitialisation de git à l'aide ont git initaidé à résoudre un problème. Maintenant je n'en ai plus .ideadu tout.

Eduard
la source
0

Même problème pour moi avec PHPStorm

Enfin, j'ai résolu de faire ce qui suit:

  • Supprimer .idea / répertoire
  • Déplacer .gitignore au même niveau sera le nouveau .idea généré /
  • Écrivez les fichiers dont vous avez besoin d'être ignoré, ainsi que .idea / . Pour être sûr qu'il sera ignoré, je mets ce qui suit:

    • .idée/
    • .idée
    • .idée/*

Je ne sais pas pourquoi fonctionne de cette façon, peut-être que .gitignore doit être au même niveau de .idea pour pouvoir être ignoré dans ce répertoire.

iDon'tKnoware
la source
-1

Ignorez les fichiers se terminant par .iwset les fichiers workspace.xmlet tasks.xmldans votre référence .gitignore

josef
la source