Nie można zignorować pliku .idea / workspace.xml - wyskakuje


237

Korzystając z PHPStorm, próbuję zignorować to, workspace.xmlktóre pojawia się za każdym razem, gdy próbuję dokonać polecenia git.

Mój .gitignorewygląda jak:

/.idea/
.idea/workspace.xml

Ponieważ w pewnym momencie plik został zatwierdzony, wykonałem również:

git rm --cached .idea/workspace.xml a następnie popełnił usunięcie, zepchnięty do samego repozytorium.

Ale plik pojawia się później, gdy wprowadzam zmiany w projekcie.

Jakieś pomysły na to, czego mi brakuje?


Próbowałem wszystkiego poniżej, dodanego do gitignore, ale wciąż powraca, ignorując gitignore.
Olaf

Wygląda na to samo pytanie . Sprawdź to i zobacz ...
Luca Ballore

Chek out this link: stackoverflow.com/questions/8156299/... . Wygląda na ten sam problem.
Luca Ballore,

Odpowiedzi:


288

Miałem do czynienia z tym samym problemem i doprowadziło mnie to do szału. Problem polegał na tym, że folder .idea JUŻ był wcześniej zaangażowany w repozytorium, a więc były śledzone przez git, niezależnie od tego, czy je zignorowałeś, czy nie. Polecam następujące, po zamknięciu RubyMine / IntelliJ lub dowolnego IDE, którego używasz:

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

Następnie pamiętaj, aby zignorować .idea w swoim .gitignore

Chociaż wystarczy zignorować go w .gitignore repozytorium, sugerowałbym, abyś globalnie ignorował pliki dot. Twojego IDE.

W przeciwnym razie będziesz musiał dodać go do każdego .gitgnore dla każdego projektu, nad którym pracujesz. Ponadto, jeśli współpracujesz z innymi ludźmi, jego najlepszą praktyką jest nie zanieczyszczanie .gitignore projektu prywatną konfiguracją, która nie jest specyficzna dla kodu źródłowego projektu.


Ostatnim poleceniem powinno być „mv ../.idea_backup .idea” zamiast „git mv ../.idea_backup .idea”, aby uniknąć błędu git
Leo Caseiro

2
Muszę zrobić git rm .ideazamiast git add .ideawykonywać tę pracę
Serge

I również zmieniona addna rm, ale w moim przypadku musiałem dodać -rtakże do rekursywnie usunąć wszystkie. git rm -r .idea
jmendiola

2
Wow ... dziękuję !! Próbowałem miliona różnych sposobów bezskutecznie. TO jest prawidłowe podejście krok po kroku. Kluczową różnicą, której mi brakowało, było upewnienie się, że moje IDE zostało zamknięte - nie przegap tego kroku! Doskonała odpowiedź :)
Jonny Asmar

Dzięki! wiele, wiele czasu spędziłem na szukaniu działających rozwiązań i wypróbowaniu wersji próbnych. To jest najprostszy sposób, aby to zrobić.
edepe

83

Właśnie miałem ten problem, musiałem to zrobić git rm -f .idea/workspace.xml , wydaje się, że już go nie ma (musiałem go również włożyć .gitignore)


7
Dodałbym również, wyłącznie ze względu na precyzję, że Idea intellij powinna zostać zamknięta podczas wykonywania tych kroków.
LoreV

29

Musiałem:

  • usuń plik z git
  • wcisnąć zatwierdzenie do wszystkich pilotów
  • upewnij się, że wszystkie inne programy polecające zostały zaktualizowane zdalnie

Polecenia

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

Inne osoby odpowiedzialne powinny działać

git pull

7
Chociaż cieszę się z tej odpowiedzi, nie mogę się powstrzymać, ale czuję, że byłoby bardziej użyteczne, gdyby uwzględniono instrukcje dotyczące wykonywania kroków (np. Dyrektywy wiersza poleceń).
flyingace

Chek out this link: stackoverflow.com/questions/8156299/... . Wygląda dokładnie jak ten sam problem.
Luca Ballore,

zamknij IDE \ n git rm -f .idea / workspace.xml \ n git commit -m "remove workspace.xml" \ n edytuj .gitignore, aby wykluczyć workspace.xml \ n otwórz IDE
Srneczek

27

W tym samym katalogu, w którym widać plik, wykonaj:

  • rm .idea/workspace.xml
  • git rm -f .idea/workspace.xml (as suggested by chris vdp)
  • vi .gitignore
  • i(aby edytować), dodaj .idea/workspace.xmljedną z linii Esc,:wq

Powinieneś być teraz dobry


2
Lub, aby dodać wiersz do .gitignore, po prostu wpisz echo .idea/workspace.xml>>.gitignore. Nie musisz otwierać vi na wszystko. Alternatywnie, a co bym zrobił, to mieć osobny plik .gitignore w katalogu .idea:echo workspace.xml>>.idea/.gitignore
Godsmith

17

Aby .idea/całkowicie usunąć z git bez wpływu na konfigurację IDE, możesz po prostu:

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

6

Jeśli masz wiele projektów w git repo, .idea/workspace.xmlnie będzie pasować do żadnych plików.

Zamiast tego wykonaj następujące czynności:

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

I spraw, aby Twój .gitignore wyglądał mniej więcej tak:

# 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

Po prostu powiedz git, aby nie zakładał, że zostało zmienione, nie ważne co:

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

tak, możesz usunąć pliki z repozytorium git. Ale jeśli twój zespół używa tego samego IDE lub jesteś sam, prawdopodobnie nie chcesz tego robić. Dla siebie chcesz mieć dobry punkt wyjścia do wznowienia pracy, również dla członków swojej drużyny.


0

Tak właśnie zrobiłem w Android Studio, który również opiera się na IntelliJ. W oknie dialogowym zatwierdzenia cofnąłem zmianę dla pliku workspace.xml, a następnie został on przeniesiony do pliku niewersjonowanego. Następnie usunąłem to z okna dialogowego zatwierdzenia. Teraz nie pojawi się na liście zmian. Zauważ, że mój gitignore już zawierał .idea / workspace.xml


0

Ponieważ w moim przypadku wykonywał pierwszy popełnić projektu, po prostu usuwając .giti .ideafoldery, a następnie za pomocą git reinicjalizacji git initpomogły rozwiązać problem. Teraz w ogóle nie mam .idea.


0

Ten sam problem dla mnie z PHPStorm

W końcu rozwiązałem następujące czynności:

  • Usuń katalog .idea /
  • Przenieś .gitignore na ten sam poziom będzie nowo wygenerowany .idea /
  • Napisz pliki, które musisz zignorować, i .idea / też. Aby mieć pewność, że zostanie zignorowany, umieszczam następujące informacje:

    • .pomysł/
    • .pomysł
    • .pomysł/*

Nie wiem, dlaczego tak działa, być może .gitignore musi być na tym samym poziomie .idea, aby zignorować ten katalog.


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.