Yanlışlıkla .idea dizin dosyalarını git'e işledi


306

.idea/Dizini yanlışlıkla git'e adadım. Bu, repo'yu kontrol etmem gereken başka her yerde çatışmalara neden oluyor. Bu dosyaları uzaktan nasıl kaldıracağımı merak ediyordum?

Intellij IDE'nin onlara ihtiyacı olduğundan bu dosyalara yerel olarak hala ihtiyacım var. Onları uzaktan kumandada istemiyorum. Dizini .idea/kendime ekledim .gitignoreve taahhüt ettim ve bu dosyayı uzaktan kumandaya ittim. Bu benim diğer makine benim ödeme sırasında hiçbir etkisi var gibi görünüyor. Hala hata mesajını alıyorum:

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
Taahhütlerinizi gözden geçirerek gelecekte bundan kaçınmanıza yardımcı olabilirsiniz. Taahhüdü yazarken editörünüzdeki farkı göstermek için commitbirlikte çalışmayı tercih ederim -v. Bu tür bir hatanın önlenmesine yardımcı olurken, tamamlama mesajınızı değiştirdiklerinize odaklamanıza yardımcı olur.
Daenyth

Daenyth haklı. Artı Git varsayılan olarak taahhüt edilen değişiklikler listesine dosya eklemenizi gerektirir, bu nedenle bunu kullanın ve her şeyi aynı anda taahhüt etmeyin. Aksi takdirde, deponuzu ekleyerek gerçekleştiği gibi kirleteceksiniz .idea.
Tadeck

1
.İdea'daki iki dosya dışındaki tüm dosyalar kaynak kontrolünde olmalıdır: devnet.jetbrains.com/docs/DOC-1186
cja

Git için taahhüt edilmemesi gereken tüm dosyaları yönetmek istediğinizde IntelliJ .ignore eklentisini çok yararlı buldum: plugins.jetbrains.com/plugin/7495?pr=idea
paranza

Merhaba, eğer uzak depoda .idea varsa bunun ne zararı var?
milad salimi

Yanıtlar:


676

Yok sayılan dosyalar listesine .idea dizini ekleyin

İlk olarak, ekleyin .gitignore, böylece yanlışlıkla sizin (veya başka birisinin) tarafından tekrar işlenmemesi:

.idea

Depodan kaldırın

İkinci olarak, dizini yalnızca depodan kaldırın, ancak yerel olarak silmeyin. Bunu başarmak için, burada listelenenleri yapın:

Git dosyasından bir dosyayı yerel dosya sisteminden silmeden kaldırma

Değişikliği başkalarına gönder

Üçüncü olarak, .gitignoredosyayı ve .ideadepodan kaldırılmasını taahhüt edin . Bundan sonra uzaktan kumandalara itin.

özet

Tüm süreç şöyle görünecektir:

$ 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

(isteğe bağlı olarak son satırı git push some_remote, some_remoteitmek istediğiniz uzaktan kumandanın adı ile değiştirebilirsiniz)


4
Not: fatal: pathspec '.idea' did not match any filesÇalıştırdığınızda iletiyi alırsanız git rm -r --cached .idea, .idea klasörünüzü silin, github'dan çekin ve tekrar deneyin.
annedroiid

'Herhangi bir dosyayla eşleşmedi' @annedroiid hatası alırsanız, yolunu deneyebilir ve ekleyebilirsiniz. Database.yml dosyasını silerken olduğu gibi, sadece 'git rm -r --cached config / database.yml' yaptım
Ruto Collins

.İdea dizinindeki bazı dosyalar deponuza teslim edilmelidir. Bkz github.com/github/gitignore/blob/master/Global/... sizin .gitignore gibi görünmelidir nasıl JetBrains öneri için.
tokenizer_fsj

2
Bu klasörü benim hayatım için depomuzdan alamıyorum ... şubeleri değiştirmek yeniden izlemeye devam ediyor ... insanlar bunu birden fazla şubede çalıştırdılar ve şubeleri her değiştirdiğinizde ... git gerektiğini düşünüyor .. ... bir noktada .idea klasörünüzü silin yani .. kısaca ... şubeleri değiştirmek artık bizim için bir ayar silme. Usta üzerinde çalıştırmayı denedim ... sonra tüm dallara karıştım .. ama fotoğraflar ayarları siliyor.
nawlbergs

1
IntelliJ'i ASLA .ideadosyaları yürütmek için klasör eklemeyecek şekilde ayarlamak için kalıcı bir çözümümüz var mı?
Serhat

88

Depodan kaldırabilir ve değişikliği yapabilirsiniz.

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

Bundan sonra, uzaktan kumandaya itebilirsiniz ve bundan sonraki her ödeme / klon tamam olacaktır.


10
Kabul edilen cevabın aksine bu benim için çalıştı. Belki de farkı yaratan git -u idi.
Paolo Mioni

İkinci hatta ihtiyacınız yok.
kjdion84

Diğerlerinin söylediği gibi, ben ikinci satır koşmadı. Bir cazibe gibi çalıştı! teşekkürler
blackkara

0

Projenize bir .gitignore dosyası eklemeli ve dosyaya eklemelisiniz /.idea. Her dizini / dosyayı bir satıra eklemelisiniz.

Varolan bir .gitignore dosyanız varsa, dosyaya yeni bir satır eklemeniz ve yeni satıra koymanız yeterlidir /.idea.

Bundan sonra git rm -r --cached .ideakomut çalıştırın .

Bir hatayla karşılaşırsanız, git rm -r -f --cached .ideakomutu çalıştırabilirsiniz . Sonuçta çalıştırın git add .ve sonra git commit -m "Removed .idea directory and added a .gitignore file"ve son olarak git pushkomutu çalıştırarak değişiklikleri itin .


0

Bunu Master şubesi üzerinden yapmak daha iyi

.Gitignore dosyasını düzenleyin. İçine aşağıdaki satırı ekleyin.

.idea

Uzak depodan .idea klasörünü kaldırın. Aşağıdaki komutu kullanarak.

git rm -r --cached .idea

Daha fazla bilgi için. başvuru: Dosyaları Gerçekten Silmeden Git Deposundan Kaldırma

Sahne .gitignore dosyası. Aşağıdaki komutu kullanma

git add .gitignore

işlemek

git commit -m 'Removed .idea folder'

Uzaktan kumandaya itin

git push origin master

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.