come fare in modo che Git ignori i file .idea creati da Rubymine


185

Uso i progetti Rubymine for Rails. Molto spesso, Rubymine apporta modifiche ai .idea/*file che non mi interessano. Ma continua a impedirmi di controllare nuove filiali e crea la mia versione di.idea/ diversa dai miei colleghi.

Abbiamo già aggiunto .idea/a .gitignore, ma mantiene il rilevamento delle modifiche in.idea . Come dovrei farlo nel modo giusto?

Di seguito è riportato uno dei tipici messaggi di errore che ho ricevuto:

error: Your local changes to the following files would be overwritten by checkout:
    .idea/workspace.xml

9
forse hai già commesso; hai bisogno di git rm; aggiungilo per ignorare.
Kaan Yy,

Risposte:


258

solo .idea/funziona bene per me


5
Ciao! vuoi dirci di più come lo fai ... non funziona per me? :(
YoniGeek,

Git funziona in modo leggermente diverso da quello. Vedi la pagina man di git per maggiori informazioni.
Steve Benner,

4
@BradBird L'ho appena provato - funziona anche per le sottocartelle. Inoltre potresti provare a**/.idea/
the_joric

22
Parte del problema è se hai già messo in scena le tue cose, il .gitignore non ti aiuterà.
Dan Rosenstark,

12
Ma se vuoi ignorare i file / le cartelle dopo averli aggiunti / archiviati, devi rimuoverli con "git rm -r - web / upload caricati" (in questo esempio ho aggiunto la cartella "web / uploads" a .gigignore file dopo che sono stati registrati) fonte: help.github.com/articles/ignoring-files
Dung

311

Prova git rm -r --cached .ideanel tuo terminale. Disabilita il rilevamento delle modifiche.


2
Molte grazie! Ma perché è nella cache dopo aver verificato un repository totalmente vuoto?
Budi,

1
Grazie, estremamente utile. Usato per rimuovere i file, quindi aggiunto .idea a gitignore e ha funzionato alla grande. Grazie mille!
Tim R

Non funziona davvero quando la cartella .idea è già sotto traccia
ACV

Quindi, se la cartella è già tracciata in Git, l'aggiunta di .idea / a .gitignore non impedirà a Git di rintracciarla. Dovrai prima fare "git rm -r --cached .idea", quindi aggiungere .idea / al tuo .gitignore. Questo sarà fantastico per me.
Sam003,

41

Si noti che JetBrains consiglia "Se si decide di condividere i file di progetto IDE con altri sviluppatori ...", tenere traccia di tutti i .idea/*file tranne i seguenti tre file :

  • workspace.xml
  • usage.statistics.xml
  • tasks.xml

Quindi, per seguire i loro consigli, dovresti aggiungere quei 3 file al tuo .gitignore.


Fonte:

Se decidi di condividere i file di progetto IDE con altri sviluppatori, segui queste linee guida:
...
Ecco cosa devi condividere:

  • Tutti i file nella directory .idea nella radice del progetto eccetto i file workspace.xml , use.statistics.xml e task.xml che memorizzano le impostazioni specifiche dell'utente
  • ...

Come gestire i progetti in Version Control Systems ( archivio )

Ci sono alcune note aggiuntive su quella pagina su quali altri file gitignore per diversi IDE e build di jetbrains specifici.


10
Mentre sono d'accordo con questa risposta [+ 1'd per correttezza], penso che i team che non sono severi con gli IDE e che possono cavarsela senza il controllo nella .ideacartella ... Non ha mai senso per me, comunque, i file in conflitto sempre per ragioni che non hanno senso.
JaKXz,

6
È una cattiva pratica impegnare file specifici IDE. Uno dei motivi è che sviluppatori diversi possono utilizzare strumenti diversi. Un altro è che quei file possono contenere una configurazione specifica dell'utente che sarà continuamente in conflitto.
Jordan Silva,

2
Questa raccomandazione è una cattiva pratica. Usarlo in un progetto è il modo migliore per file di versione che contengono informazioni specifiche dell'utente come il percorso assoluto ... Basta guardare all'interno della .ideacartella prima di seguire questa guida.
JBE

1
Anche se sarei d'accordo sul fatto che commettere ciecamente file IDE sia sempre una cattiva idea, perché commettere ciecamente qualcosa è una cattiva idea. In alcune circostanze, la condivisione di file IDE potrebbe funzionare bene. È concettualmente simile alla condivisione dei file di orchestrazione dei container in quanto sono un modo per eseguire applicazioni. Proprio come i file IDE sono un modo per sviluppare il progetto e possono contenere definizioni utili come come eseguire i test unitari o i comandi di copertura del codice, ben disposti per un IDE specifico. La maggior parte dei .ideafile (almeno in PyCharm) sono progettati per essere condivisi.
Samuel Harmer,

26

Aggiungi .idea/*al tuo elenco di esclusioni per impedire il tracciamento di tutti i file .idea, directory e risorse secondarie.


24

se un file è già tracciato da Git, l'aggiunta del file a .gitignore non impedirà a Git di rintracciarlo. Dovrai prima eseguire i file offensivi, quindi aggiungili al tuo .gitignore.

L'aggiunta di .idea / dovrebbe funzionare


Questa dovrebbe essere la risposta più completa!
Sam003,

21

usando git rm -r --cached .ideanel tuo terminale ha funzionato benissimo per me. Disabilita il rilevamento delle modifiche e disattiva un certo numero di file nella cartella rubymine (idea /) che potrei quindi aggiungere e impegnare in git, rimuovendo così il confronto e consentendo al gitignore di .idea/funzionare.


13

Chiudi PHP Storm nel terminale vai al tipo di cartella del progetto

git rm -rf .idea; git commit -m "delete .idea"; git push;

Quindi vai alla cartella del progetto ed elimina la cartella .idea

sudo rm -r .idea/

Avvia PhpStorm e hai finito


12

Nella rubi gui c'è una lista di ignorare (impostazioni / controllo versione). Forse prova a disabilitarlo lì. Ho ricevuto il suggerimento dai loro ragazzi di supporto.

inserisci qui la descrizione dell'immagine



8

Sebbene non sia passato troppo tempo a passare a Rubymine, ho trovato difficile ignorare i file .idea di Rubymine da impegnarsi in git.

Ecco come l'ho risolto

Se non hai fatto alcuna messa in scena / impegno, o hai appena creato un nuovo progetto nella miniera di Ruby, allora fai semplicemente questo

opzione 1

Aggiungi la riga seguente al file .gitignore che di solito si trova nella radice del tuo repository.

# Ignore .idea files
.idea/

Questo assicurerà che tutti i file .idea vengano ignorati dal tracciamento di git, anche se rimarranno nella cartella del progetto localmente.

opzione 2

Se hai comunque eseguito una messa in scena / commit, o hai appena aperto un progetto esistente nella miniera di Ruby, allora semplicemente fallo

Esegui il codice nel tuo terminale / riga di comando

git rm -r --cached .idea

Questo elimina i file .idea già tracciati in git

Successivamente, includi .idea / nel file .gitignore che di solito si trova nella radice del tuo repository.

# Ignore .idea files
.idea/

Questo assicurerà che tutti i file .idea vengano ignorati dal tracciamento di git, anche se rimarranno nella cartella del progetto localmente.

Opzione 3

Se hai comunque eseguito una messa in scena / commit, o hai appena aperto un progetto esistente in Ruby mine e vuoi eliminare totalmente i file .idea localmente e in git, allora fai semplicemente questo

Esegui il codice nel tuo terminale / riga di comando

git rm -r --cached .idea

Questo elimina i file .idea già tracciati in git

Esegui il codice nel tuo terminale / riga di comando

rm -r .idea

Ciò elimina tutti i file .idea inclusa la cartella localmente

Successivamente, includi .idea / nel file .gitignore che di solito si trova nella radice del tuo repository.

# Ignore .idea files
.idea/

Questo assicurerà che tutti i file .idea vengano ignorati dal tracciamento di git e anche eliminati dalla cartella del progetto localmente.

È tutto

Spero che aiuti


4

Per me esisteva solo una soluzione per rimuovere la cartella .idea rispetto al file di commit .gitignore con ".idea" e per utilizzare nuovamente IDE


Ciao! Ci ho provato! ma l'IDE non è riuscito a ricaricare nuovamente i miei file ... come hai fatto? Grazie!
YoniGeek,

4

Suggerisco di leggere la pagina man di git per capire fino in fondo come ignorare il lavoro, e in futuro mi ringrazierai;)

Rilevante per il tuo problema:

Two consecutive asterisks ("**") in patterns matched against full pathname may have special meaning:

A leading "**" followed by a slash means match in all directories. For example, "**/foo" matches file or directory "foo" anywhere, the same     as pattern "foo". "**/foo/bar" matches file or directory "bar" anywhere that is directly under directory "foo".

A trailing "/**" matches everything inside. For example, "abc/**" matches all files inside directory "abc", relative to the location of the .    gitignore file, with infinite depth.

A slash followed by two consecutive asterisks then a slash matches zero or more directories. For example, "a/**/b" matches "a/b", "a/x/b",     "a/x/y/b" and so on.

Other consecutive asterisks are considered invalid.

4

Puoi usare gitignore per la generazione avanzata di file gitignore. È veloce, facile e i tag all'avanguardia vengono generati automaticamente per te.

Utilizzare questo collegamento per la maggior parte dei software jetbrains ( intelij , phpstorm ...) file .gitignore di jetbrains

[modificare]

Di seguito è riportato il file gitignore generato per i software Jetbrains, questo ti impedirà di condividere informazioni sensibili (password, keystore, password db ...) utilizzate da qualsiasi software Jetbrains per gestire i progetti.

# Created by https://www.gitignore.io

### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm

*.iml

## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:

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

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

# Gradle:
# .idea/gradle.xml
# .idea/libraries

# Mongo Explorer plugin:
# .idea/mongoSettings.xml

## File-based project format:
*.ipr
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties

Anche il codice generato è ben commentato. spero che aiuti :)


Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia.
Himanshu

@Himanshu Il link è a un motore di ricerca di file gitignore. Cosa suggerisci dovrebbe essere copiato da esso nel post?
Dan D.

4

Ho provato ad aggiungere quei file nel mio .gitignoreed era inutile ...

Tuttavia, come ha detto Petr Syrov , puoi usarlo git rm -r --cached .ideanel tuo terminale e quei file non saranno più un problema!



2

Che dire .idea/*? Non ho testato, ma dovrebbe farlo



0

Se hai già effettuato un commit iniziale e hai i file .idea mostrati come nuovi file in git, dovrai prima rimuovere i file e quindi eseguirne il commit. I seguenti passaggi faranno il trucco

 1. git rm --cached -r .idea/
 2. Add .idea/ to **.git/info/exclude** or **.gitignore**
 3. git commit -m 'ignore .idea/ files'

È spiegato in dettaglio in questo link qui: https://devconnected.com/how-to-clear-git-cache/

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.