git dosyaları .gitignore öğesine ekledikten sonra değiştirilmiş olarak gösterir


252

Bunu .gitignore dosyasına ekliyorum

.idea/*

ama yine de durum:

#       modified:   .gitignore
#       modified:   .idea/.generators
#       modified:   .idea/dovezu.iml
#       modified:   .idea/misc.xml
#       modified:   .idea/workspace.xml

Neyi yanlış yapıyorum ? hatta küresel ~ / .gitignore_global .idea / * ekledi ama git durumu, neyse bana gösterir:

#       modified:   .gitignore
#       modified:   .idea/.generators
#       modified:   .idea/dovezu.iml
#       modified:   .idea/misc.xml
#       modified:   .idea/workspace.xml

Yanıtlar:


422

Sizin .gitignoreçalışıyor, ama yine de onlar endekste zaten dosyalar yüzünden izler.

Bunu durdurmak için yapmanız gerekenler: git rm -r --cached .idea/

İşlemi tamamladığınızda .idea/dizin git deponuzdan kaldırılır ve aşağıdaki işlemler .idea/dizini yok sayar .

Not: Bir dizini yoksaymak .idea/yerine kullanabilirsiniz .idea/*. Üzerinde kalıpları hakkında daha fazla bilgi bulabilirsiniz .gitignore adam sayfası .


git-rmAdam sayfasından faydalı alıntı

--cached
    Use this option to unstage and remove paths only from the index. 
    Working tree files, whether modified or not, will be left alone.

Ne demek istediğinizi "Sadece .idea / da işe yarar" ifadesiyle açıklar mısınız? Bu, kullanmak .gitignoreve sonra yapmak için alternatif bir çözüm müdür git rm -cached?
Mehrad

3
@Mehrad .gitignore içinde * gerek yok
Steve Pitchers

2
Hayır, sadece .idea / eklemek işe yaramıyor, çünkü cevapta söylediğin gibi, zaten dizinde.
Henrique de Sousa

15
commitÖnbelleğe alınmış dosyaları kaldırdıktan sonra yapmanız gerektiğini mi söylüyorsunuz ? Bu gerçekten karşı sezgisel görünüyor; Bunlar işlemek istemediğim dosyalardır. Ve bunların depodan silinmesini istemiyorum (sadece artık dağınıklık etrafında asılı durmalarını istemiyorum git status). Yoksa gerçekten kafam karıştı mı?
Scott Biggs

6
Dosyaları daha önceki bir taahhüt nedeniyle git tarafından zaten izlendi, bu yüzden onları kaldırmak için onları depodan kaldıran yeni bir taahhüt oluşturmanız gerekiyor.
mcls

47

Bu sorunu hala arayan kullanıcılar için yalnızca bu sayfaya bakıyorlar.

Bu, önbelleğe alınmış dizin dosyalarını kaldırmanıza yardımcı olur ve ardından yalnızca .gitignoredosyanızdaki değişiklikler de dahil olmak üzere ihtiyacınız olanları ekler.

1. git rm -r --cached .  
2. git add .
3. git commit -m 'Removing ignored files'

İşte biraz daha fazla bilgi.

  1. Bu komut, önbelleğe alınan tüm dosyaları dizinden kaldırır.
  2. Bu komut, içinde belirtilenler dışındaki tüm dosyaları ekler gitignore.
  3. Bu komut dosyalarınızı tekrar işler ve git'in yoksaymasını istediğiniz dosyaları kaldırır, ancak yerel dizininizde tutar.

1
Bu benim için yararlı oldu, sadece windows cmd'de tek tırnakların # 3'te işe yaramadığını görüyorum. Git commit -am kullanma "Yoksayılan dosyaları kaldırma" Yine de çalışır.
Sundance.101

1
Endişeye gerek yok ve açık ve özlü cevap için tekrar teşekkürler.
Sundance.101

1
Bu çözüm gerçekten proje dosyalarımı karıştırıyor. Bunu yaptıktan sonra her şeyi geri almak zorunda kaldım.
Fatmajk

1

Burada ve başka yerlerde sunulan çözümler benim için işe yaramadı, bu yüzden gelecekteki okuyucular için tartışmaya ekleyeceğim. Kuşkusuz prosedürü henüz tam olarak anlamadım, ancak sonunda (benzer) sorunumu çözdüm ve paylaşmak istiyorum.

Windows 10'da IntelliJ IDEA'da git ile çalışırken bazı yüzlerce dosyayla bazı doktor dizinlerini yanlışlıkla önbelleğe almıştım ve bunları .gitignore(ve muhtemelen biraz hareket ettirerek) ekledikten sonra bunları Varsayılan Changelist'ten kaldıramadım.

İlk olarak yaptığım gerçek değişiklikleri yaptım, sonra bunu çözmeye devam ettim - beni çok uzun sürdü. Ben denedim git rm -r --cached .ama her zaman path-specERRORS alırsınız path-spec, -fve ve -rbayraklarının farklı varyasyonları ile .

git statushala dosya adlarını gösterecekti, bu yüzden o kelimelerin bazılarını kelimesi kelimesine kullanmaya çalıştım git rm -cached, ama şansım yoktu. Değişikliklerin saklanması ve sökülmesi işe yaradı, ancak bir süre sonra tekrar sıraya girdiler (tam zaman diliminde bir pusluyum). Sonunda iyi kullanmak için bu girişleri kaldırdım

git reset

Gerçekte taahhüt etmek istediğiniz aşamalı / önbelleğe alınmış hiçbir değişiklik olmadığında bunun yalnızca İYİ BİR FİKİR olduğunu varsayıyorum.


0

Basitçe ekleyin git rm -r --cached <folder_name/file_name>

Bazen .gitignore dosyasını dosyaların komut komutundan sonra güncelleştirirsiniz. Böylece, dosyalar bellekte önbelleğe alınır. Önbelleğe alınan dosyaları kaldırmak için yukarıdaki komutu kullanın.


-2
  1. Git ekleyin.

  2. Git status // Değiştirilen dosyayı kontrol edin

    // git reset HEAD --- yoksaymak istediğiniz dosyayı değiştirin

  3. git reset HEAD .idea / <- .idea komutunu // git kontrol durumundan önce hariç tutmak isteyenler ve fikir dosyası kaybolacak ve gitmeye hazırsınız!

  4. git taahhüt -m ''

  5. git push


Bu OP'nin sıfırlamak istediği varsayımıdır.
SovietFrontier
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.