jak sprawić, by Git ignorował pliki .idea utworzone przez Rubymine


185

Używam Rubymine do projektów Rails. Bardzo często Rubymine wprowadza zmiany w .idea/*plikach, na których mi nie zależy. Ale wciąż uniemożliwia mi sprawdzanie nowych oddziałów i sprawia, że ​​moja wersja .idea/różni się od moich współpracowników.

Mamy już dodane .idea/do .gitignore, ale utrzymuje śledzenie zmian w .idea. Jak mam to zrobić we właściwy sposób?

Poniżej znajduje się jeden z typowych komunikatów o błędach:

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

9
może już się zaangażowałeś; musisz git rm; dodaj to, aby zignorować.
Kaan Yy,

Odpowiedzi:


257

po prostu .idea/działa dobrze dla mnie


5
cześć! chcesz nam powiedzieć więcej, jak to robisz ... nie działa dla mnie? :(
YoniGeek

Git działa nieco inaczej. Zobacz stronę man git, aby uzyskać więcej informacji.
Steve Benner

4
@BradBird Właśnie próbowałem - działa również dla podfolderów. Możesz także spróbować**/.idea/
the_joric

22
Część problemu polega na tym, że jeśli już wystawiłeś swoje rzeczy, .gitignore nie pomoże.
Dan Rosenstark

12
Ale jeśli chcesz zignorować pliki / foldery po dodaniu / wpisaniu ich, musisz je usunąć za pomocą polecenia „git rm -r - cached web / uploads” (w tym przykładzie dodałem folder „web / uploads” do pliku .gigignore plik po ich zameldowaniu) źródło: help.github.com/articles/ignoring-files
Dung

311

Spróbuj git rm -r --cached .ideaw swoim terminalu. Wyłącza śledzenie zmian.


2
Wielkie dzięki! Ale dlaczego znajduje się w pamięci podręcznej po kasie całkowicie pustego repozytorium?
Budi

1
Dziękuję, bardzo przydatne. Użyłem tego, aby usunąć pliki, a następnie dodałem .idea do gitignore i zadziałało świetnie. Dziękuję bardzo!
Tim R

To tak naprawdę nie działa, gdy folder .idea jest już śledzony
ACV

Więc jeśli folder jest już śledzony w Git, dodanie .idea / do .gitignore nie powstrzyma Git przed jego śledzeniem. Najpierw musisz zrobić „git rm -r --cached .idea”, a następnie dodać .idea / do swojego .gitignore. To mi się spodoba.
Sam003,

41

Zauważ, że JetBrains zaleca „Jeśli zdecydujesz się udostępnić pliki projektu IDE innym programistom ...”, śledząc wszystkie .idea/*pliki oprócz następujących trzech plików :

  • workspace.xml
  • use.statistics.xml
  • tasks.xml

Aby postępować zgodnie z ich radami, dodaj te 3 pliki do .gitignore.


Źródło:

Jeśli zdecydujesz się udostępnić pliki projektu IDE innym programistom, postępuj zgodnie z następującymi wskazówkami:
...
Oto, co musisz udostępnić:

  • Wszystkie pliki w .idea katalogu w katalogu głównym projektu poza tym workspace.xml , usage.statistics.xml i tasks.xml pliki specyficznych ustawień, które użytkownik sklepu
  • ...

Jak zarządzać projektami w ramach systemów kontroli wersji ( archiwum )

Na tej stronie znajduje się kilka dodatkowych uwag na temat tego, które inne pliki gitignore dla różnych IDE Jetbrain i kompilacji.


10
Chociaż zgadzam się z tą odpowiedzią [daje +1 za poprawność], myślę, że zespoły, które nie są surowe w zakresie IDE i takie mogą uciec od nierejestrowania się w .ideafolderze ... Dla mnie to nigdy nie ma sensu, pliki tam zawsze występuje konflikt z powodów, które nie mają sensu.
JaKXz,

6
Zatwierdzanie plików IDE jest złą praktyką. Jednym z powodów jest to, że różni programiści mogą korzystać z różnych narzędzi. Innym jest to, że pliki te mogą zawierać konfigurację specyficzną dla użytkownika, przez co cały czas pojawią się konflikty.
Jordan Silva

2
To zalecenie jest złą praktyką. Używanie go w projekcie jest najlepszym sposobem na wersjonowanie plików, które zawierają informacje specyficzne dla użytkownika, takie jak ścieżka bezwzględna ... Wystarczy zajrzeć do .ideafolderu przed wykonaniem tego reco.
JBE

1
Chociaż zgodziłbym się, że ślepe popełnianie plików IDE jest zawsze złym pomysłem, ponieważ ślepe popełnianie czegokolwiek jest złym pomysłem. W niektórych okolicznościach udostępnianie plików IDE może działać dobrze. Jest to koncepcyjnie podobne do udostępniania plików aranżacji kontenerów, ponieważ są one jednym ze sposobów uruchamiania aplikacji. Podobnie jak pliki IDE są jednym ze sposobów rozwoju projektu i mogą zawierać przydatne definicje, takie jak uruchamianie testów jednostkowych lub poleceń pokrycia kodu, starannie opakowanych dla konkretnego IDE. Większość .ideaplików (przynajmniej w PyCharm) jest przeznaczona do udostępniania.
Samuel Harmer

26

Dodaj .idea/*do listy wykluczeń, aby zapobiec śledzeniu wszystkich plików .idea, katalogów i zasobów podrzędnych.


24

jeśli plik jest już śledzony przez Git, dodanie go do .gitignore nie powstrzyma Git przed jego śledzeniem. Najpierw musisz zrobić git rm obrażające pliki, a następnie dodać do swojego .gitignore.

Dodanie .idea / powinno działać


To powinna być bardziej wyczerpująca odpowiedź!
Sam003,

21

używanie git rm -r --cached .ideaw twoim terminalu działało dla mnie świetnie. Wyłącza śledzenie zmian i usuwa wiele plików w folderze rubymine (idea /), które mógłbym następnie dodać i zatwierdzić do git, usuwając w ten sposób porównanie i pozwalając na działanie ustawienia gitignore .idea/.


13

Zamknij program Storm Storm w terminalu, przejdź do typu folderu projektu

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

Następnie przejdź do folderu projektu i usuń folder .idea

sudo rm -r .idea/

Uruchom PhpStorm i gotowe


12

W interfejsie rubymine znajduje się lista ignorowanych (ustawienia / kontrola wersji). Może spróbuj ją tam wyłączyć. Dostałem podpowiedź od ich facetów ze wsparcia.

wprowadź opis zdjęcia tutaj



8

Chociaż nie minęło dużo czasu od przejścia na Rubymine, z trudem zignorowałem pliki .idea Rubymine z git.

Oto jak to naprawiłem

Jeśli w ogóle nie zrobiłeś żadnej inscenizacji / zatwierdzenia lub po prostu uruchomiłeś nowy projekt w kopalni Ruby, po prostu zrób to

opcja 1

Dodaj wiersz poniżej do pliku .gitignore, który zwykle znajduje się w katalogu głównym repozytorium.

# Ignore .idea files
.idea/

Zapewni to, że wszystkie pliki .idea zostaną zignorowane przez git, chociaż nadal pozostaną lokalnie w folderze projektu.

Opcja 2

Jeśli jednak wykonałeś inscenizację / zatwierdzenie lub po prostu otworzyłeś istniejący projekt w kopalni Ruby, po prostu zrób to

Uruchom kod w swoim terminalu / linii poleceń

git rm -r --cached .idea

To usuwa już śledzone pliki .idea w git

Następnie dołącz plik .idea / do pliku .gitignore, który zwykle znajduje się w katalogu głównym repozytorium.

# Ignore .idea files
.idea/

Zapewni to, że wszystkie pliki .idea zostaną zignorowane przez git, chociaż nadal pozostaną lokalnie w folderze projektu.

Opcja 3

Jeśli jednak wykonałeś kilka etapów / zatwierdzeń lub po prostu otworzyłeś istniejący projekt w kopalni Ruby i chcesz całkowicie usunąć pliki .idea lokalnie i w git, po prostu zrób to

Uruchom kod w swoim terminalu / linii poleceń

git rm -r --cached .idea

To usuwa już śledzone pliki .idea w git

Uruchom kod w swoim terminalu / linii poleceń

rm -r .idea

Spowoduje to usunięcie wszystkich plików .idea, w tym folderu lokalnie

Następnie dołącz plik .idea / do pliku .gitignore, który zwykle znajduje się w katalogu głównym repozytorium.

# Ignore .idea files
.idea/

Zapewni to, że wszystkie pliki .idea zostaną zignorowane przez git, a także usunięte lokalnie z folderu projektu.

To wszystko

mam nadzieję, że to pomoże


4

Dla mnie było tylko jedno rozwiązanie, aby usunąć folder .idea niż zatwierdzić plik .gitignore za pomocą „.idea” i ponownie użyć IDE


cześć! Próbowałem tego! ale IDE nie mogło ponownie załadować moich plików ... jak to zrobiłeś? dzięki!
YoniGeek

4

Sugeruję przeczytanie strony podręcznika git, aby w pełni zrozumieć, jak ignorować pracę, aw przyszłości będziesz mi wdzięczny;)

Istotne dla twojego problemu:

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

Możesz użyć gitignore do zaawansowanego generowania plików gitignore. Jest to szybkie, łatwe i najnowocześniejsze tagi są automatycznie generowane dla Ciebie.

Użyj tego linku do większości plików jetbrains ( intelij , phpstorm ...) jetbrains .gitignore

[edytować]

Poniżej znajduje się wygenerowany plik gitignore dla oprogramowania Jetbrains. Zapobiegnie to udostępnianiu poufnych informacji (haseł, magazynów kluczy, haseł db ...) używanych przez oprogramowanie Jetbrains do zarządzania projektami.

# 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

Wygenerowany kod jest również dobrze komentowany. mam nadzieję, że to pomoże :)


Chociaż ten link może odpowiedzieć na pytanie, lepiej dołączyć tutaj istotne części odpowiedzi i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli zmieni się połączona strona.
Himanshu,

@Himanshu Link do wyszukiwarki plików gitignore. Co sugerujesz, należy skopiować z niego na post?
Dan D.

4

Próbowałem dodać te pliki do mojego .gitignorei było to bezużyteczne ...

Niemniej jednak, jak powiedział Petr Syrov , możesz korzystać git rm -r --cached .ideaz terminala, a te pliki nie będą już stanowić problemu!



2

Co .idea/*? Nie testowałem, ale powinien to zrobić



0

Jeśli już dokonałeś wstępnego zatwierdzenia i masz pliki .idea wyświetlane jako nowe pliki w git, musisz najpierw je usunąć, a następnie zatwierdzić. Poniższe kroki załatwią sprawę

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

Wyjaśnia to szczegółowo ten link tutaj: https://devconnected.com/how-to-clear-git-cache/

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.