Versehentlich festgeschriebene .idea-Verzeichnisdateien in git


306

Ich habe das .idea/Verzeichnis versehentlich in git festgeschrieben . Dies führt überall zu Konflikten, wenn ich mein Repo auschecken muss. Ich habe mich gefragt, wie ich diese Dateien von der Fernbedienung entfernen kann.

Ich benötige diese Dateien immer noch lokal, da die Intellij IDE sie benötigt. Ich will sie einfach nicht in der Fernbedienung haben. Ich habe das Verzeichnis .idea/zu meinem hinzugefügt .gitignoreund diese Datei festgeschrieben und in die Remote-Datei verschoben. Dies scheint jedoch beim Auschecken auf meinem anderen Computer keine Auswirkungen zu haben. Ich erhalte immer noch die Fehlermeldung:

error: The following untracked working tree files would be overwritten by checkout:
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/uiDesigner.xml
.idea/vcs.xml
.idea/workspace.xml

10
Sie können dies in Zukunft vermeiden, indem Sie Ihre Commits überprüfen. Ich ziehe es vor, commitmit zu laufen -v, um den Unterschied in Ihrem Editor anzuzeigen, wenn Sie das Commit schreiben. Es hilft, diese Art von Fehlern zu vermeiden und Ihre Commit-Nachricht auf das zu konzentrieren, was Sie geändert haben.
Daenyth

Daenyth hat recht. Außerdem müssen Sie bei Git standardmäßig Dateien zur Liste der festgeschriebenen Änderungen hinzufügen. Nutzen Sie diese also und schreiben Sie nicht alles auf einmal fest. Andernfalls verschmutzen Sie Ihr Repository, indem Sie es hinzufügen .idea.
Tadeck

1
Alle bis auf zwei Dateien in .idea sollten sich in der Quellcodeverwaltung befinden: devnet.jetbrains.com/docs/DOC-1186
cja

Ich fand das IntelliJ .ignore-Plugin sehr nützlich, wenn Sie alle Dateien verwalten möchten, die nicht an git übergeben werden sollen: plugins.jetbrains.com/plugin/7495?pr=idea
paranza

Hallo, was ist das schädliche daran, wenn wir .idea im Remote-Repository haben?
Milad Salimi

Antworten:


677

Fügen Sie der Liste der ignorierten Dateien das Verzeichnis .idea hinzu

Fügen Sie es zunächst hinzu .gitignore, damit es nicht versehentlich von Ihnen (oder einer anderen Person) erneut begangen wird:

.idea

Entfernen Sie es aus dem Repository

Zweitens entfernen Sie das Verzeichnis nur aus dem Repository, aber löschen Sie es nicht lokal. Um dies zu erreichen, gehen Sie wie folgt vor:

Entfernen Sie eine Datei aus einem Git-Repository, ohne sie aus dem lokalen Dateisystem zu löschen

Senden Sie die Änderung an andere

Drittens schreiben Sie die .gitignoreDatei fest und entfernen Sie sie .ideaaus dem Repository. Danach schieben Sie es auf die Fernbedienung (en).

Zusammenfassung

Der gesamte Prozess würde folgendermaßen aussehen:

$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit -m '(some message stating you added .idea to ignored entries)'
$ git push

(Optional können Sie die letzte Zeile durch die Nummer der Fernbedienung ersetzen git push some_remote, auf some_remotedie Sie drücken möchten.)


4
Hinweis: Wenn Sie fatal: pathspec '.idea' did not match any filesbeim Ausführen die Meldung erhalten git rm -r --cached .idea, löschen Sie Ihren .idea-Ordner, ziehen Sie ihn aus github und versuchen Sie es erneut.
Annedroiid

Wenn Sie den Fehler @annedroiid erhalten, dass keine Dateien gefunden wurden, können Sie versuchen, den Pfad hinzuzufügen. Wie beim Löschen der Datei database.yml habe ich einfach 'git rm -r --cached config / database.yml'
Ruto Collins am

Einige Dateien im .idea-Verzeichnis sollten in Ihr Repo eingecheckt werden. Unter github.com/github/gitignore/blob/master/Global/… finden Sie Vorschläge von JetBrains, wie Ihr .gitignore aussehen soll.
Tokenken_fsj

2
Ich kann diesen Ordner für mein ganzes Leben nicht aus unserem Repo herausholen ... das Wechseln von Zweigen verfolgt ihn immer wieder neu ... Leute haben dies auf mehreren Zweigen ausgeführt und jedes Mal, wenn Sie Zweige wechseln ... Git glaubt, dass es notwendig ist ... . Irgendwann ... löschen Sie Ihren .idea-Ordner, also ... kurz gesagt ... das Wechseln der Zweige ist für uns im Grunde genommen ein Löschen der Einstellungen. Ich habe versucht, es auf dem Master auszuführen ... und dann in alle Zweige zu verschmelzen ... aber Standbilder löschen die Einstellungen.
Nawlbergs

1
Haben wir eine dauerhafte Lösung dafür, die auf IntelliJ gesetzt ist, um NIEMALS .ideaOrdner zum Festschreiben von Dateien hinzuzufügen ?
Serhat

88

Sie können es aus dem Repo entfernen und die Änderung festschreiben.

git rm .idea/ -r --cached
git add -u .idea/
git commit -m "Removed the .idea folder"

Danach können Sie es auf die Fernbedienung schieben und jeder Checkout / Klon danach ist in Ordnung.


10
Dies funktionierte für mich im Gegensatz zu der akzeptierten Antwort. Vielleicht war es das Git-Add -u, das den Unterschied ausmachte.
Paolo Mioni

Sie brauchen nicht die 2. Zeile.
kjdion84

Wie die anderen sagten, lief ich keine zweite Zeile. Lief wie am Schnürchen! danke
blackkara

0

Sie sollten Ihrem Projekt eine Gitignore- Datei hinzufügen und hinzufügen /.idea. Sie sollten jedes Verzeichnis / jede Datei in einer Zeile hinzufügen.

Wenn Sie eine vorhandene Gitignore- Datei haben, sollten Sie der Datei einfach eine neue Zeile hinzufügen und /.ideain die neue Zeile einfügen .

Nach diesem git rm -r --cached .ideaBefehl ausführen .

Wenn Sie auf einen Fehler gestoßen sind, können Sie den git rm -r -f --cached .ideaBefehl ausführen . Immerhin laufen git add .und dann git commit -m "Removed .idea directory and added a .gitignore file"und schließlich die Änderungen per git pushBefehl ausführen .


0

Es ist besser, dies über den Master-Zweig durchzuführen

Bearbeiten Sie die Gitignore-Datei. Fügen Sie die folgende Zeile hinzu.

.idea

Entfernen Sie den Ordner .idea aus dem Remote-Repo. mit dem folgenden Befehl.

git rm -r --cached .idea

Für mehr Information. Referenz: Entfernen von Dateien aus einem Git-Repository, ohne sie tatsächlich zu löschen

Stage .gitignore-Datei. Verwenden Sie den folgenden Befehl

git add .gitignore

Verpflichten

git commit -m 'Removed .idea folder'

Zur Fernbedienung drücken

git push origin master

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.