wie man Git dazu bringt, von Rubymine erstellte IDE-Dateien zu ignorieren

182

Ich benutze Rubymine für Rails-Projekte. Sehr oft nimmt Rubymine Änderungen an .idea/*Dateien vor, die mir egal sind. Aber es hindert mich immer wieder daran, neue Filialen zu besuchen, und unterscheidet meine Version .idea/von meinen Kollegen.

Wir bereits hinzugefügt .idea/zu .gitignore, aber es hält Verfolgen von Änderungen in .idea. Wie soll ich das richtig machen?

Unten ist eine der typischen Fehlermeldungen, die ich erhalten habe:

error: Your local changes to the following files would be overwritten by checkout:
    .idea/workspace.xml
AdamNYC
quelle
9
vielleicht hast du dich schon verpflichtet; du musst rm git; füge es hinzu, um es zu ignorieren.
Kaan Yy

Antworten:

254

.idea/funktioniert einfach gut für mich

the_joric
quelle
5
Hallo! Willst du uns mehr sagen, wie du es machst? Funktioniert das nicht für mich? :(
YoniGeek
Git funktioniert ein bisschen anders. Weitere Informationen finden Sie auf der Git-Manpage .
Steve Benner
4
@BradBird Ich habe es gerade versucht - funktioniert auch für Unterordner. Vielleicht möchten Sie auch versuchen**/.idea/
the_joric
21
Ein Teil des Problems ist, dass der .gitignore nicht hilft, wenn Sie Ihre Inhalte bereits inszeniert haben.
Dan Rosenstark
12
Wenn Sie jedoch Dateien / Ordner ignorieren möchten, nachdem Sie sie hinzugefügt / eingecheckt haben, müssen Sie sie mit "git rm -r --cached web / uploads" entfernen (in diesem Beispiel habe ich den Ordner "web / uploads" zu .gigignore hinzugefügt Datei nach dem Einchecken
Dung
309

Versuchen Sie es git rm -r --cached .ideain Ihrem Terminal. Es deaktiviert die Änderungsverfolgung.

Petr Syrov
quelle
2
Vielen Dank! Aber warum ist es im Cache, nachdem ich ein völlig leeres Repository ausgecheckt habe?
Budi
1
Vielen Dank, sehr nützlich. Verwendete dies, um die Dateien zu entfernen, fügte dann .idea zum Gitignore hinzu und es funktionierte großartig. Ich danke dir sehr!
Tim R
Das funktioniert nicht wirklich, wenn der .idea-Ordner bereits verfolgt wird
ACV
Wenn der Ordner bereits in Git verfolgt wird, hindert das Hinzufügen der .idea / zu .gitignore Git nicht daran, ihn zu verfolgen. Sie müssen zuerst "git rm -r --cached .idea" ausführen und dann .idea / zu Ihrem .gitignore hinzufügen. Das wird großartig für mich.
Sam003
41

Beachten Sie, dass JetBrains empfiehlt, "Wenn Sie IDE-Projektdateien für andere Entwickler freigeben möchten ...", alle .idea/*Dateien mit Ausnahme der folgenden drei Dateien zu verfolgen :

  • workspace.xml
  • usage.statistics.xml
  • task.xml

Um ihren Rat zu befolgen, würden Sie diese 3 Dateien zu Ihrem .gitignore hinzufügen.


Quelle:

Wenn Sie IDE-Projektdateien für andere Entwickler freigeben möchten, befolgen Sie diese Richtlinien:
...
Folgendes müssen Sie freigeben:

  • Alle Dateien unter .idea Verzeichnis im Projektstamm mit Ausnahme des workspace.xml , usage.statistics.xml und tasks.xml Dateien , die Speicher benutzerspezifischen Einstellungen
  • ...

So verwalten Sie Projekte unter Versionskontrollsystemen ( Archiv )

Auf dieser Seite finden Sie einige zusätzliche Hinweise dazu, welche anderen Dateien für verschiedene spezifische Jetbrains-IDEs und Builds gitignore werden sollen.

Daryn
quelle
10
Obwohl ich dieser Antwort zustimme [+ 1 für die Richtigkeit], denke ich, dass Teams, die nicht streng mit IDEs umgehen und solche, davonkommen können, wenn sie den .ideaOrdner überhaupt nicht einchecken ... Es hat für mich sowieso nie Sinn gemacht, Dateien da gibt es immer Konflikte aus Gründen, die keinen Sinn ergeben.
JaKXz
6
Es ist eine schlechte Praxis, IDE-spezifische Dateien festzuschreiben. Ein Grund dafür ist, dass unterschiedliche Entwickler unterschiedliche Tools verwenden können. Eine andere ist, dass diese Dateien möglicherweise benutzerspezifische Konfigurationen enthalten, die ständig zu Konflikten führen.
Jordan Silva
2
Diese Empfehlung ist eine schlechte Praxis. Die Verwendung in einem Projekt ist der beste Weg, um Dateien zu versionieren, die benutzerspezifische Informationen wie den absoluten Pfad enthalten ... Schauen Sie einfach in Ihren .ideaOrdner, bevor Sie dieser Aufzeichnung folgen.
JBE
1
Ich würde zwar zustimmen, dass das blinde Festschreiben von IDE-Dateien immer eine schlechte Idee ist, aber das blinde Festschreiben von etwas ist eine schlechte Idee. Unter bestimmten Umständen kann die Freigabe von IDE-Dateien gut funktionieren. Es ist konzeptionell der Freigabe von Container-Orchestrierungsdateien insofern ähnlich, als sie eine Möglichkeit zum Ausführen von Anwendungen darstellen. Genau wie IDE-Dateien sind sie eine Möglichkeit, das Projekt zu entwickeln, und können nützliche Definitionen wie das Ausführen von Komponententests oder Codeabdeckungsbefehlen enthalten, die für eine bestimmte IDE übersichtlich verpackt sind. Die meisten .ideaDateien (zumindest in PyCharm) sind für die gemeinsame Nutzung vorgesehen.
Samuel Harmer
26

Fügen Sie .idea/*Ihrer Ausschlussliste hinzu, um die Verfolgung aller IDE-Dateien, -Verzeichnisse und -Unterressourcen zu verhindern.

Wahrnehmung
quelle
24

Wenn eine Datei bereits von Git verfolgt wird, hindert das Hinzufügen der Datei zu .gitignore Git nicht daran, sie zu verfolgen. Sie müssen zuerst die fehlerhafte (n) Datei (en) git rm und dann zu Ihrem .gitignore hinzufügen.

Das Hinzufügen von .idea / sollte funktionieren

Appsmatik
quelle
Dies sollte die umfassendere Antwort sein!
Sam003
21

Die Verwendung git rm -r --cached .ideain Ihrem Terminal hat bei mir hervorragend funktioniert. Es deaktiviert die Änderungsverfolgung und deaktiviert eine Reihe von Dateien unter dem Rubymine-Ordner (Idee /), die ich dann hinzufügen und für Git festlegen kann. Dadurch wird der Vergleich entfernt und die Gitignore-Einstellung von .idea/funktioniert.

GMarx
quelle
13

Schließen Sie PHP Storm im Terminal und wechseln Sie zum Projektordnertyp

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

Gehen Sie dann zum Projektordner und löschen Sie den Ordner .idea

sudo rm -r .idea/

Starten Sie PhpStorm und Sie sind fertig

Gustavo Maimone
quelle
12

In der Rubymine-GUI gibt es eine Ignorierliste (Einstellungen / Versionskontrolle). Versuchen Sie es vielleicht dort zu deaktivieren. Ich habe den Hinweis von ihren Support-Leuten bekommen.

Geben Sie hier die Bildbeschreibung ein

Manavortex
quelle
9

Fügen Sie .idea zu ~ / .gitignore_global hinzu und befolgen Sie die Anweisungen hier, damit .gitignore_global funktioniert:

Git global ignorieren funktioniert nicht

Dann müssen Sie es niemals einer einzelnen Gitignore-Datei hinzufügen.

Fosrias
quelle
8

Obwohl es nicht allzu lange her ist, dass ich zu Rubymine gewechselt bin, fand ich es schwierig, .idea-Dateien von Rubymine zu ignorieren, weil sie auf git festgelegt wurden.

Hier ist, wie ich es behoben habe

Wenn Sie überhaupt kein Staging / Commit durchgeführt haben oder gerade ein neues Projekt in Ruby Mine gestartet haben, tun Sie dies einfach

Option 1

Fügen Sie die folgende Zeile zur Gitignore-Datei hinzu, die sich normalerweise im Stammverzeichnis Ihres Repositorys befindet.

# Ignore .idea files
.idea/

Dadurch wird sichergestellt, dass alle .idea-Dateien ignoriert werden und nicht von git verfolgt werden, obwohl sie weiterhin lokal in Ihrem Projektordner verbleiben.

Option 2

Wenn Sie jedoch ein Staging / Commit durchgeführt haben oder gerade ein vorhandenes Projekt in Ruby Mine geöffnet haben, tun Sie dies einfach

Führen Sie den Code in Ihrem Terminal / Ihrer Befehlszeile aus

git rm -r --cached .idea

Dadurch werden bereits verfolgte IDE-Dateien in Git gelöscht

Fügen Sie als Nächstes .idea / in die .gitignore-Datei ein, die normalerweise im Stammverzeichnis Ihres Repositorys abgelegt wird.

# Ignore .idea files
.idea/

Dadurch wird sichergestellt, dass alle .idea-Dateien ignoriert werden und nicht von git verfolgt werden, obwohl sie weiterhin lokal in Ihrem Projektordner verbleiben.

Option 3

Wenn Sie jedoch Staging / Commit durchgeführt haben oder gerade ein vorhandenes Projekt in Ruby Mine geöffnet haben und .idea-Dateien lokal und in git vollständig löschen möchten, tun Sie dies einfach

Führen Sie den Code in Ihrem Terminal / Ihrer Befehlszeile aus

git rm -r --cached .idea

Dadurch werden bereits verfolgte IDE-Dateien in Git gelöscht

Führen Sie den Code in Ihrem Terminal / Ihrer Befehlszeile aus

rm -r .idea

Dadurch werden alle IDE-Dateien einschließlich des Ordners lokal gelöscht

Fügen Sie als Nächstes .idea / in die .gitignore-Datei ein, die normalerweise im Stammverzeichnis Ihres Repositorys abgelegt wird.

# Ignore .idea files
.idea/

Dadurch wird sichergestellt, dass alle .idea-Dateien ignoriert werden, von git verfolgt und auch lokal aus Ihrem Projektordner gelöscht werden.

Das ist alles

ich hoffe das hilft

Versprich Preston
quelle
4

Für mich gab es nur eine Lösung, um den .idea-Ordner als die Commit-Datei .gitignore mit ".idea" zu entfernen und dann die IDE erneut zu verwenden

Ivan Petkevich
quelle
Hallo! Ich habe es versucht! aber die IDE konnte meine Dateien nicht erneut laden ... wie hast du das gemacht? Vielen Dank!
YoniGeek
4

Ich schlage vor, die git-Manpage zu lesen, um zu verstehen, wie man ignoriert, und in Zukunft wirst du mir danken;)

Relevant für Ihr Problem:

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.
Steve Benner
quelle
4

Sie können Gitignore für die erweiterte Generierung von Gitignore-Dateien verwenden. Es ist schnell, einfach und innovative Tags werden automatisch für Sie generiert.

Verwenden Sie diesen Link für die meisten Jetbrains-Software ( Intelij , Phpstorm ...) Jetbrains .gitignore-Datei

[bearbeiten]

Unten finden Sie die generierte Gitignore-Datei für Jetbrains-Software. Dadurch wird verhindert, dass Sie vertrauliche Informationen (Kennwörter, Schlüsselspeicher, Datenbankkennwörter ...) weitergeben, die von einer Jetbrains-Software zum Verwalten von Projekten verwendet werden.

# 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

Der generierte Code ist ebenfalls gut kommentiert. hoffe es hilft :)

Williem
quelle
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert.
Himanshu
@Himanshu Der Link führt zu einer Suchmaschine für Gitignore-Dateien. Was schlagen Sie vor, sollte davon in die Post kopiert werden?
Dan D.
4

Ich habe versucht, diese Dateien in meine hinzuzufügen .gitignoreund es war nutzlos ...

Trotzdem, wie Petr Syrov sagte, können Sie es git rm -r --cached .ideain Ihrem Terminal verwenden und diese Dateien werden kein Problem mehr sein!

Frisinacho
quelle
2

Was ist mit .idea/*? Nicht getestet, aber es sollte es tun

ksol
quelle
1

Verwenden Sie das .ignore- Plugin: https://plugins.jetbrains.com/plugin/7495--ignore

Es verwaltet viele Pfade / Muster automatisch für Sie und verfügt über viele nützliche Zusatzfunktionen. Es ist kompatibel mit:

  • IntelliJ IDEE
  • PhpStorm
  • WebStorm
  • PyCharm
  • RubyMine
  • AppCode
  • CLion
  • GoLand
  • DataGrip
  • Fahrer
  • MPS
  • Android Studio
Mir-Ismaili
quelle
0

Wenn Sie bereits ein erstes Commit durchgeführt haben und .idea-Dateien als neue Dateien in git angezeigt werden, müssen Sie die Dateien zuerst entfernen und dann festschreiben. Die folgenden Schritte reichen aus

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

Es wird in diesem Link hier ausführlich erklärt: https://devconnected.com/how-to-clear-git-cache/

benitta.ruphus
quelle