gitignore klasörü yok saymaz


135

Projemin kökünde bir fooklasörüm var. İçinde fooklasörün Bir var barbir klasör. barKlasörümdeki tüm dosyalardaki tüm değişiklikleri yok saymak istiyorum . Bu benim gitignore:

/foo/bar

Klasör kontrol edilir: mevcuttur ve yok sayılacak dosyalara sahiptir. gitignoreolduğunu committed. Ancak, bir moifikasyon yaptığım ve klasörümün içinde bulunan bir dosyam var bar. Yazdığımda

git status

benim içinde git bashgöz ardı edilmesi gereken dosyayı görüyorum. Nedeni ne olabilir ve çubuk klasörümdeki tüm dosyaları nasıl başarılı bir şekilde yoksayabilirim?

Unutmayın, dosyalar daha önce aynı satırla göz ardı edildi, ancak bu satırı geçici olarak commitsunucudaki bir şeye kaldırmak zorunda kaldım . Sonra, commitçizgiyi gitignore. Bu bir süre önceydi ama şimdi dosyaların içinde olacağını gözlemledim git status. Yok sayılan dosyaları .tw dosyasında görünmeden değiştirebilmeyi umuyorum git status.


Gelecekte, göz ardı edilen bir şeyi eklemek için yok saymalarınızı değiştirmenize gerek yoktur. git add -f ignored-filegörmezden gelenlerinizde olsa bile bir dosya ekleyecektir.
Chris

Ne git status foo/bar/file-that-should-be-ignoredverir?
Chris

Herhangi bir değişiklik olursa göz ardı edilmesi gereken dosya. Açıkçası bir şeyi kaçırıyorum, ancak bilgime göre bu durumda git durumu listesi boş olmalıdır, bunun için / foo / bar .gitignore
Lajos Arpad

4
Bu dosya aslında Git tarafından izleniyor gibi görünüyor. Bir noktada arşive eklenmiş olmalıdır. İle geçmişini görebilirsiniz git log foo/bar/file-that-should-be-ignored. Deponun bir parçası olmaması gerekiyorsa, onu kaldırmalı git rm --cached foo/bar/file-that-should-be-ignoredve ardından aşağıda Reck tarafından önerildiği gibi işlem yapmalısınız (ancak bunu tüm klasörde değil, yalnızca dosya üzerinde yapardım). Bu, (a) dosyayı Git'ten kaldıracak, (b) dosyayı yerel kopyanızda tutacak ve (c) başkaları fetchveya pullyeni kaydetme sırasında dosyanın silinmesine neden olacaktır .
Chris

Yanıtlar:


342

Sanırım bu klasör daha önce git'e kontrol edildi?

Çalıştırın git rm -r --cached <folder>ve tekrar kontrol edin.


3
Bu, klasörü (mevcut sürüm) depodan tamamen kaldıracaktır. OP klasörün orada olmasını istiyor, ancak yeni değişiklikler izlenmemeli
Gareth

Maalesef kabulü kaldırmam gerekiyor. Bu çözüm, itildiğinde dosyaların uzak sürümlerini kaldırdı. Gitignore'u bir klasörün tüm dosyalarını yok sayacak şekilde ayarlamak istiyorum, onu uzaktan kaldırmak için değil. Mümkün mü? Çözümü geri aldım.
Lajos Arpad

12
git update-index --assume-unchanged <folder>belki?
Reck

3
@Lajos, bu kafa karıştırıcı "düzenle" yorumunu oraya eklemek yerine onun hatasını düzeltmeniz gerekmez mi?
cregox

2
@Cawas, bu site bilgi paylaşımıyla ilgili olduğu için cevap: hayır. Hata içeren bir cevabı kabul etmek yanıltıcıdır. Bu -r isteğe bağlı değildir.
Lajos Arpad

47

Benim için kabul edilen cevap, çözümün tamamı değil, çözümün bir parçasıydı. Belki, göndermek üzere olduğum diğer adımlar açıktı, ama önce onları kaçırdım. Dosyamın .gitignoregöz ardı etmesini istediğim klasörü yok saydığından emin olmak için attığım adımlar :

  1. Düzeltmeniz / değiştirmeniz gereken tüm değişiklikleri yapın.
  2. Şu komutu çalıştırın: git rm -r --cached .(git deponuzu yenilemek için her şeyi git dizininden kaldırır)
  3. Ardından şu komutu çalıştırın: git add .(her şeyi depoya geri eklemek için)
  4. Son olarak, bu değişiklikleri kullanarak gerçekleştirin git commit -m ".gitignore Fixed"

Çözümü bulduğum makalenin bağlantısını burada bulabilirsiniz .


1
Bu, orijinal soruya dayalı uygun bir çözüm değildir. @ lagos-arpad, projenin tamamı değil, özellikle bir alt dizin hakkında soru sordu. Çözümünüz her şeyi git deposunun kök düzeyinden kaldırır ve bu, bu sorunu çözmek için önerilen bir yaklaşım değildir.
justinhartman

Yalnızca bir alt dizin olsa bile, yalnızca bir dosyayla uğraştığım için bu çözüm benim için çalıştı. Lütfen neden tavsiye edilmediğini açıklar mısınız?
sikanderBabwani

1
Uğraştığınız şey önemsiz. Bu sorunun cevabı değildir ve diğer cevabın da işaret ettiği gibi potansiyel olarak tehlikelidir. Bu, uzak depodaki istemediğiniz şeyleri kaldırır.
RichieHH

8

Bu sorunu yaşıyordum ve git'in dosyaları / klasörleri doğru bir şekilde görmezden geldiğini fark ettim, ancak kod düzenleyicim (Visual Studio Code) sadece hatalıydı ve UI kenar çubuğunda düzgün şekilde "grileştirmiyor". VSCode'u yeniden başlattım ve beklendiği gibi griydi.


Aynı burada: VS Code v1.30.2 (kullanıcı)
xinthose

Benim için aynı. Bu çözüm için çok teşekkür ederim! VS Code'u yeniden başlatmayı deneyene kadar .gitignore'umun neden çalışmadığını merak ediyordum.Visual Studio Code v1.44.2 kullanıyorum.
Fritz Lim

6

Kabul edilen cevaba ek olarak

git rm -r --cached /foo/bar/
git status

Bunu yaptığımda, terminal rmbu dizindeki bir sürü dosya gösteriyor . Bu nedenle, uzaktan kumandayı gereksiz yere etkileyebilecek başka bir işlemi önlemek için şunu yaptım:

git reset HEAD *
git status

Bundan sonra, işlenecek hiçbir şey söylemedi ve içindeki dosyaları değiştirdiğimde /foo/bar/ve git statushala alıyorum nothing to commit.


1
Bu beni başladığım yere geri döndürüyor (sorun)
Shonubi Korede
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.