Impossibile ignorare .idea / workspace.xml - continua ad apparire


237

Usando PHPStorm, sto cercando di ignorare ciò workspace.xmlche appare ogni volta che provo a fare un commit git.

Il mio .gitignoreaspetto è:

/.idea/
.idea/workspace.xml

Perché a un certo punto è stato eseguito il commit del file, ho anche eseguito:

git rm --cached .idea/workspace.xml e poi ha commesso la rimozione, spinto in un repository nudo.

Ma il file continua ad apparire più tardi quando apporto delle modifiche al progetto.

Qualche idea su cosa mi sto perdendo?


Ho provato tutto sotto, aggiunto a Gitignore, ma continua ancora a tornare, ignorando Gitignore.
Olaf,

Sembra la stessa domanda . Dai un'occhiata e vedi ...
Luca Ballore,

Scarica questo link: stackoverflow.com/questions/8156299/… . Sembra il tuo stesso problema.
Luca Ballore,

Risposte:


289

Stavo affrontando lo stesso problema e mi ha spinto verso il muro. Il problema finì per essere che la cartella .idea era già stata precedentemente salvata nel repository, e quindi venivano monitorati da Git indipendentemente dal fatto che li ignorassi o meno. Vorrei raccomandare quanto segue, dopo aver chiuso RubyMine / IntelliJ o qualunque IDE si stia utilizzando:

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

Dopo, assicurati di ignorare .idea nel tuo .gitignore

Anche se è sufficiente ignorarlo nel .gitignore del repository, suggerirei di ignorare i dotfile del tuo IDE a livello globale.

Altrimenti dovrai aggiungerlo a ogni .gitgnore per ogni progetto su cui lavori. Inoltre, se si collabora con altre persone, è consigliabile non inquinare il .gitignore del progetto con una configurazione privata non specifica del codice sorgente del progetto.


L'ultimo comando dovrebbe essere "mv ../.idea_backup .idea" invece di "git mv ../.idea_backup .idea" per evitare errori git
Leo Caseiro,

2
Devo fare git rm .ideainvece di git add .ideafare il lavoro
Serge

Ho anche cambiato addper, rmma nel mio caso ho dovuto aggiungere -ranche per rimuovere ricorsivamente tutto. git rm -r .idea
jmendiola,

2
Wow grazie!! Ho provato questo un milione di modi diversi senza alcun risultato. QUESTO è l'approccio passo per passo corretto. La differenza fondamentale che mi mancava era assicurarsi che il mio IDE fosse chiuso - non perdere questo passaggio! Ottima risposta :)
Jonny Asmar,

Grazie! molti, molti tempi spesi alla ricerca di soluzioni funzionanti e provati severi. Questo è il modo più semplice per farlo.
edepe,

83

Ho avuto questo problema proprio ora, dovevo farlo git rm -f .idea/workspace.xml ora sembra essere sparito (dovevo anche inserirlo .gitignore)


7
Vorrei anche aggiungere, solo per amor di precisione, che Idea Intellij dovrebbe essere chiusa quando si eseguono questi passaggi.
LoreV,

29

Dovevo:

  • rimuovere il file da git
  • spingere il commit su tutti i telecomandi
  • assicurarsi che tutti gli altri committer siano stati aggiornati da remoto

comandi

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

Dovrebbero essere eseguiti altri committer

git pull

7
Anche se sono contento per questa risposta, non posso fare a meno di pensare che sarebbe più utile se fossero incluse le istruzioni su come eseguire i passaggi (ad esempio, le direttive della riga di comando).
flyingace,

Scarica questo link: stackoverflow.com/questions/8156299/… . Sembra esattamente il tuo stesso problema.
Luca Ballore,

chiudi IDE \ n git rm -f .idea / workspace.xml \ n git commit -m "rimuovendo workspace.xml" \ n modifica .gitignore per escludere workspace.xml \ n apri IDE
Srneczek

27

Nella stessa directory in cui vedi apparire il file, fai:

  • rm .idea/workspace.xml
  • git rm -f .idea/workspace.xml (as suggested by chris vdp)
  • vi .gitignore
  • i(per modificare), aggiungere .idea/workspace.xmlin una delle linee, Esc,:wq

Dovresti essere bravo ora


2
Oppure, per aggiungere la riga a .gitignore, basta digitare echo .idea/workspace.xml>>.gitignore. Non è necessario aprire vi per tutto. In alternativa, e cosa farei, è di avere un file .gitignore separato nella directory .idea:echo workspace.xml>>.idea/.gitignore
Godsmith

17

Per rimuovere .idea/completamente da Git senza influenzare la tua configurazione IDE potresti semplicemente fare:

git rm -r --cached '.idea/'
echo .idea >> .gitignore
git commit -am "removed .idea/ directory"

6

Se hai più progetti nel tuo repository git, .idea/workspace.xmlnon corrisponderanno a nessun file.

Invece, procedi come segue:

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

E rendi il tuo .gitignore simile a questo:

# 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/

5

Di 'a Git di non dare per scontato che sia cambiato, non importa cosa:

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

sì, puoi rimuovere i file dal repository git. Ma se tutti i tuoi team usano lo stesso IDE o sei da solo, probabilmente non vorrai farlo. Per te stesso, vuoi avere un buon punto di partenza per riprendere a lavorare, anche per i tuoi compagni di squadra.


0

Il modo in cui ho fatto in Android Studio, anch'esso basato su IntelliJ, è stato così. Nella finestra di dialogo di commit, ho ripristinato la modifica per workspace.xml, quindi è stata spostata nel file non verificato. Successivamente ho eliminato questo dalla finestra di dialogo di commit. Ora non comparirà nell'elenco delle modifiche. Nota che il mio gitignore includeva già .idea / workspace.xml


0

Dato che nel mio caso stavo eseguendo un primo commit di un progetto, semplicemente l'eliminazione .gite le .ideacartelle e quindi la reinizializzazione di git usando mi hanno git initaiutato a risolvere un problema. Ora non ho .ideaaffatto.


0

Lo stesso problema per me con PHPStorm

Alla fine ho risolto il seguente:

  • Rimuovere la directory .idea /
  • Sposta .gitignore allo stesso livello sarà il nuovo .idea / generato
  • Scrivi i file che devi ignorare e .idea / too. Per essere sicuro che verrà ignorato ho messo quanto segue:

    • .idea/
    • .idea
    • .idea/*

Non so perché funzioni in questo modo, forse .gitignore deve essere allo stesso livello di .idea per poter ignorare questa directory.


-1

Ignora i file che terminano con .iwse i file workspace.xmle tasks.xmlnel tuo riferimento .gitignore

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.