Yok sayılan dosyaları git durumunun dışında tutun


133

Git'in içinde göz ardı edilen dosyaları göstermesini durdurmak istiyorum git status, çünkü Değiştirilmiş ancak güncellenmemiş dosyalar listesinde tonlarca belge ve yapılandırma dosyası olması listeyi yarı yararsız hale getiriyor.

Git'in bu dosyaları göstermesi normal mi?

Bir bilgiyi görmezden koymak .gitignoreGit depo kök dizininde dosya ve kullanırken onlar eklenmez git add .ama onlar yukarıda belirtilen listede görünür ve onlar tamamen, ya göz ardı edilmez görünüyor yok listede gösterilmesini tarafından basılmıştır git ls-files --others -i --exclude-standard. ~/.gitignoreOrada yalnızca kalıplarla eşleşen dosyalar görünür .

Daha önceki bir aşamada onları görmezden gelmediğim ve bu nedenle en az bir kez bu şekilde adanmış oldukları için olabilir mi?

Yanıtlar:


231

Bu yazıda bulduğum gibi , .gitignoreyalnızca izlenmeyen dosyalar için çalışıyor. Depoya dosya eklediyseniz şunları yapabilirsiniz:

git update-index --assume-unchanged <file>

veya bunları arşivden kaldırın:

git rm --cached <file>

Düzenle

Bu makale bunu da açıklıyor


4
güncelleme dizini benim için çalıştı. Git durumunun göz ardı edilen dosyaları gösterdiği benzer bir sorun ... çok can sıkıcı. +1
Abe Petrillo

3
Hala bu problemim var. Yukarıdaki komutların hiçbiri benim için işe yaramadı. Her iki durumda da git, söz konusu dosyalar hakkında bilgisinin olmadığını söylüyor ancak yine de git durumunda görünüyorlar :(
Cfreak

5
@Cfreak Dosyanız için git status -- <file>"Değişiklikler kaydetme için hazırlanmadı" veya "İzlenmeyen dosyalar" gösteriyor mu? İlki, dizinde zaten dosyanız varsa ve probleminizi çözmek için daha fazla bilgiye ihtiyacım olacaksa (gösterilen git mesajlarıyla ayrı bir soru oluşturun ve yorumda ona bağlantı gönderin). Sonuncusu git tarafından izlenmeyen (henüz) ancak .gitignoredosyada olmayan ve dizine serbestçe eklenebilen dosyalar içindir.
MBO

1
@MBO - evet öyle. Teşekkür ederim! Yorumunuz bu cevabı bulmama yardımcı oldu: stackoverflow.com/questions/594757/… benim için çalıştı.
Cfreak

1
İlk seçenek bir cazibe gibi çalışır. İkincisini zaten denedim ve dosyaların "kaldırıldı" olarak sahnelenmesine neden oldu ve kesinlikle bunu istemedim.
Carrm

16

Bu sorunu da gündeme getirdim, bunun nedeni büyük olasılıkla göz ardı ettiğiniz dizini / dosyalarınızı .gitignore'a, başlangıçta işleme akışında GIT tarafından "izlenecek" olarak işaretlendikten sonra eklemiş olmanızdır.

Yani git izleme önbelleğini şu şekilde temizlemeniz gerekir:

git rm --cached -r [folder/file name]

Daha ayrıntılı bir açıklama burada okunabilir: http://www.frontendjunkie.com/2014/12/stop-git-from-tracking-changes-to.html

Yukarıdaki komut, uzak GIT kaynağınızdan klasör / dosyaların kalıntılarını da kaldırmıştır. Böylece GIT depolarınız temizlenir.


12

Sorun, bu dosyanın hala git önbelleğinde olması olabilir. Bu sorunu çözmek için git önbelleğini sıfırlamanız gerekir.

Git önbelleğini sıfırlayın. Bu, her şeyi dizinden kaldırır.

git rm -r --cached . 

Tüm dosyaları yeniden ekleyin:

git add . 

Teslim Et:

git commit -m ".gitignore was fixed." 

2

Bu kesinlikle işe yarıyor

git rm --cached -r [folder/file name]


1

Tmp dizini eklemek istemediğinizi varsayıyorum (Visual Studio Platformu)

1- Yerel .gitignore dosyanıza aşağıdaki satırları ekleyin

## ignore tmp
/tmp/
./tmp/

3- tmp Klasörünü yerel olarak yedekleyin ve silin. (Başka bir yere yedekleyin. Örneğin masaüstü?)

4- Uzaktan Senkronize Etmektense Değişiklikleri Yerel Olarak Uygula (örn. Github).

Bu adımlardan sonra tmp dizininiz tekrar yüklenmeyecektir.


0

Gönderen adam git-lsfiles :

-i, --ignored
Show ignored files in the output. Note that this also reverses any exclude list present.

Kişisel olarak, kaynak ağacımda doxygen dosyalarını tutma eğilimindeyim, bu yüzden bunu basitçe .gitignore dosyama ekledim (kaynak ağacımın en üst dizininde yer alır):

docs/*

Umarım yardımcı olur.


0

Aşağıdaki adımlar yalnızca izlenmeyen dosyalar için işe yarar . Bu bilgi aşağıdaki yapılandırma için geçerlidir:

Platform: linux

Git version: git version 1.8.3.1

Aşağıdaki konumda bulunan "dışlama" dosyasında yok sayılacak dosyaların listesini koyun.

<path till .git directory>/.git/info/exclude

"Hariç tut" dosyasının ilk içeriği

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

"Hariç tutma" dosyasının son içeriği

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~


*.tar
*.gch

0

Kabul edilen cevaba göre, dosyanın değişmemiş olduğunu varsayabilirsiniz , böylece yerel makinenizde yaptığınız her şey uzak şubenize kaydedilmez.

git update-index --assume-unchanged src/main/resources/config.properties Src / main.resources / config.properties dosyasının projenizde bu dosyayı bulma yolu için bir örnek olduğu bir şey .

Şimdi, dosyayıremove cached deponuzdan tamamen kaldırmak istiyorsanız, bunun yerine `git rm --cached yerine kullanmak isteyebilirsiniz.

Bu senaryo aşağıdaki durumda uygulanabilir:

Diyelim ki şifreleri sakladığım bir dosyam var. Başlangıçta bu dosyayı yanlış ayrıntılarla kaydetmiştim, sırf meslektaşlarımın da aynı dosyayı makinelerinde bulundurması için. Ancak, şimdi yerel makineme doğru ayrıntıları ekledim. Şimdi doğru şifre ayrıntılarıyla bu dosyanın yanlışlıkla tekrar işlenmesini nasıl önleyebilirim?


-1

bunun gibi

git --ignored myfolder

Ve sadece klasörüm için durumu gösterecek

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.