Przypadkowo popełnione pliki katalogu .idea do git

306

Przypadkowo przekazałem .idea/katalog do git. Powoduje to konflikty wszędzie tam, gdzie muszę sprawdzić moje repozytorium. Zastanawiałem się, jak usunąć te pliki z pilota?

Nadal potrzebuję tych plików lokalnie, ponieważ Intellij IDE ich potrzebuje. Po prostu nie chcę ich na pilocie. Dodałem katalog .idea/do mojego, zatwierdziłem .gitignorei wcisnąłem ten plik do zdalnego. Wydaje się, że nie ma to wpływu podczas kasy na moim drugim komputerze. Nadal pojawia się komunikat o błędzie:

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
sethu
źródło
10
Możesz pomóc uniknąć tego w przyszłości, sprawdzając swoje zobowiązania. Wolę biegać commitz, -vaby pokazać różnicę w twoim edytorze podczas pisania zmiany. Pomaga zapobiegać tego rodzaju błędom, a także pomaga skoncentrować komunikat zatwierdzenia na tym, co zmieniłeś.
Daenyth,
Daenyth ma rację. Plus Git domyślnie wymaga dodawania plików do listy zatwierdzonych zmian, więc skorzystaj z tego i nie zatwierdzaj wszystkiego naraz. W przeciwnym razie zanieczyścisz swoje repozytorium tak, jak to się stało, dodając .ideado niego.
Tadeck,
1
Wszystkie oprócz dwóch plików w .idea powinny być pod kontrolą źródło: devnet.jetbrains.com/docs/DOC-1186
CJA
Uważam, że wtyczka IntelignJ .ignore jest bardzo przydatna, gdy chcesz zarządzać wszystkimi plikami, które nie powinny być przypisane do git: plugins.jetbrains.com/plugin/7495?pr=idea
paranza
Cześć, jakie to jest szkodliwe, jeśli mamy .idea w zdalnym repozytorium?
milad salimi

Odpowiedzi:

676

Dodaj katalog .idea do listy ignorowanych plików

Najpierw dodaj go .gitignore, aby nie został przypadkowo popełniony przez ciebie (lub kogoś innego):

.idea

Usuń go z repozytorium

Po drugie, usuń katalog tylko z repozytorium, ale nie usuwaj go lokalnie. Aby to osiągnąć, wykonaj czynności wymienione tutaj:

Usuń plik z repozytorium Git bez usuwania go z lokalnego systemu plików

Wyślij zmianę do innych

Po trzecie, zatwierdz .gitignoreplik i usuń go .ideaz repozytorium. Następnie wepchnij go do pilota (ów).

Podsumowanie

Cały proces wyglądałby następująco:

$ 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

(opcjonalnie możesz zastąpić ostatnią linię git push some_remote, gdzie some_remotejest nazwa pilota, do którego chcesz naciskać)

Tadeck
źródło
4
Uwaga: Jeśli fatal: pathspec '.idea' did not match any filespo uruchomieniu pojawi się komunikat git rm -r --cached .idea, usuń folder .idea, pobierz z github, a następnie spróbuj ponownie.
annedroiid
Jeśli pojawi się błąd @annedroiid „nie pasuje do żadnych plików”, możesz spróbować dodać jego ścieżkę. Tak jak podczas usuwania pliku database.yml, po prostu zrobiłem „git rm -r --cached config / database.yml”
Ruto Collins
Niektóre pliki w katalogu .idea powinny zostać zarejestrowane w repozytorium. Zobacz github.com/github/gitignore/blob/master/Global/..., aby uzyskać sugestie JetBrain dotyczące tego, jak powinien wyglądać Twój .gitignore .
tokenizer_fsj
2
Nie mogę wyciągnąć tego folderu z repozytorium na całe życie ... zmiana gałęzi ciągle go śledzi ... ludzie uruchomili to w wielu gałęziach i za każdym razem, gdy zmieniasz gałęzie ... git uważa, że ​​musi ... , w pewnym momencie ... usuń folder .idea, więc ... w skrócie ... zmiana gałęzi jest teraz dla nas w zasadzie wyczyszczeniem ustawień. Próbowałem uruchomić go na systemie głównym ... a następnie połączyć się ze wszystkimi gałęziami ... ale zdjęcia wycierają ustawienia.
nawlbergs
1
Czy mamy stałe rozwiązanie tego problemu, aby ustawić IntelliJ, aby NIGDY nie dodawać .ideafolderu do zatwierdzania plików?
Serhat
88

Możesz usunąć go z repozytorium i zatwierdzić zmianę.

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

Następnie możesz wcisnąć go do pilota i każde kasa / klon po tym będzie w porządku.

Ricardo Souza
źródło
10
To działało dla mnie, w przeciwieństwie do przyjętej odpowiedzi. Może to różnica sprawiła, że ​​to git add -u.
Paolo Mioni,
Nie potrzebujesz drugiej linii.
kjdion84 20.04.17
Jak powiedzieli inni, nie uruchomiłem drugiej linii. Działa jak urok! dzięki
blackkara,
0

Powinieneś dodać plik .gitignore do swojego projektu i dodać /.ideago. Należy dodać każdy katalog / plik w jednym wierszu.

Jeśli masz istniejący plik .gitignore , powinieneś po prostu dodać nową linię do pliku i umieścić /.ideaw nowej linii.

Po tym git rm -r --cached .ideapoleceniu uruchomienia .

Jeśli wystąpił błąd, możesz uruchomić git rm -r -f --cached .ideapolecenie. Po wszystkim uruchom, git add .a następnie git commit -m "Removed .idea directory and added a .gitignore file"i na koniec wypuść zmiany, uruchamiając git pushpolecenie.

Hossein
źródło
0

Lepiej to zrobić w gałęzi Master

Edytuj plik .gitignore. Dodaj w nim poniższy wiersz.

.idea

Usuń folder .idea ze zdalnego repozytorium. za pomocą poniższego polecenia.

git rm -r --cached .idea

Po więcej informacji. odwołanie: Usuwanie plików z repozytorium Git bez ich faktycznego usuwania

Plik Stage .gitignore. Za pomocą poniższego polecenia

git add .gitignore

Popełnić

git commit -m 'Removed .idea folder'

Naciśnij na pilocie

git push origin master

rahulnikhare
źródło