git deposu tüm .dll'leri yok sayıyor


88

Başlık her şeyi söylüyor. NuGet paketlerimi depoya eklemeye çalışıyorum. .Dll dosyaları dışında her şey tespit ediliyor.

Gitignore dosyası * .dll'ye başvuru içermez. .Dll dosyaları, deponun tamamında herhangi bir yerde bulunduklarında tanınmaz. bilgi / dışlama da boştur.

Ayrıca depoyu (dosya sisteminden dosya sistemine, uzaktan dosya sisteminden dosya sistemine) şanssız olarak klonladım. Bu sorun aynı zamanda iki farklı bilgisayarda da oluyor.

.Dll dosyalarını manuel olarak ekleyebilirim, ancak izlenmeleri gerekir. Neden izlenmiyorlar?


26
Ne git config --get core.excludesfilediyor?
Antony Hatchkins

2
Ayrıca git, revizyonlar arasındaki deltaları verimli bir şekilde hesaplayamadığından ikili dosyaları izlemek için git kullanmak genellikle iyi bir fikir değildir, bu nedenle tüm sürümleri tutmak boşa gider. Eğer dll'ler anında üretiliyorsa, git'te onları yok saymak daha iyidir. Değilse - başka bir senkronizasyon mekanizması kullanmak daha iyidir (örn. Rsync).
Antony Hatchkins

Git'e eklemeye çalıştığım NuGet paketleri bunlar. NuGet'in "Paket Geri Yükleme" işlevini kullanmıyorum, bu nedenle tüm paketler klasörünün kontrol edilmesine ihtiyacım var.
Paul Knopf

Yanıtlar:


121

Ya var mı ~/.gitignore_globalya ~/.gitignoreda bu dosya desenleri listeleme olabilir ev dizininde?

Https://help.github.com/articles/ignoring-files adresine bakın


6
Dll dosyalarıyla çalıştığı göz önüne alındığında, Windows platformunda, yani ~ Windows 7 altında $ HOMEDRIVE $ HOMEPATH anlamına geliyor
Antony Hatchkins

9
Sorun bu çıktı. Yine de bu genel görmezden gelen dosyayı eklemedim. Aniden ortaya çıkmasının bir nedeni var mı? Şimdi düşünüyorum da, yakın zamanda SourceTree'yi (Atlassian'dan) kurdum. Belki suçludur?
Paul Knopf

6
Ben de aynı sorunu yaşadım, ondan önce SourceTree'yi de kurdum. Bu yüzden SourceTree'nin geçmişte çalıştığı için global görmezden gelme dosyasını eklediğini tahmin ediyorum.
Andreas Krebs

8
Düzenleme: Tamam, SourceTree bağlantısı
Andreas Krebs

31
Ben çalıştırmak zorunda git check-ignoredosya nerede olduğunu öğrenmek için. Fond o ~ / Belgeler / gitignore_global.txt de
Matt Canty

98

SourceTree kullanırsanız ve varsayılan ayar varsayılan olarak tüm DLL'leri yok sayacaktır ... Araçlar => Seçenekler => Git ve ardından "Dosyayı Düzenle" ... dll => "# .dll" den önce bir "#" ekleyin .. . kaydet ve kapat.

Ardından, Windows Gezgini için, paketler klasörünüzde bir GitBash terminali açın ve "git add" yazın. ve çalışmasına izin verin, SourceTree'ye geri dönün, bir saniye bekleyin ve tüm bu eksik paket DLL'leri kaydetmeniz ve itmeniz için görünecektir.


13
SourceTree kullanıcıları için doğru cevap;)
jmpcm

Global bir göz ardı listesi hakkında bir şeyler biliyor muydunuz, GUI'de bulamadınız .. Teşekkürler!
Christoph

Araçlar => Seçenekler => Git / Mercurial Global Yoksayılanlar Listesi ... Listeye sahip değilseniz, oluşturabilir ve orada işaret edebilirsiniz.
KevinB

2
Dosyanın konumu: ~ / Documents / gitignore_global.txt
James McCormack

Bu kaynak ağacı için işe yaradı, ancak görsel stüdyo için nasıl yok sayanlar benim gitignore'umda değildi. Bu görev için kullandığım kaynak ağacı
Demodave

11

.Dll dosyalarını manuel olarak ekleyebilirim, ancak izlenmeleri gerekir. Neden izlenmiyorlar?

Hayır, onlar olmamalıdır bunları ekledik sürece izlenir. Yalnızca önceden eklenmiş ve kaydedilmiş dosyalar izlenir; "izlenen" budur.

Bunlardan birini manuel olarak eklemeyi deneyin; git addbu, neden onları yok saydığını söyleyecek ve yine git add -fde dosyayı eklemek için kullanmanızı isteyecektir .


Bir "git add '/ packages" "yaptım ve .dll'leri algılamadı. Daha sonra -f kullandım ve ekledi. Yine de sorunu buldum. "* .dll" genel olarak görmezden gelmemin içindeydi. Bu küresel görmezden gelmenin nereden geldiğine dair hiçbir ipucu yok.
Paul Knopf

2

Git'e yeni dosyaları izlemesini açıkça söylemelisiniz.

  1. git add filenameDosyayı git'in dizinine eklemek için çalıştırın .

  2. git commitDizininizdeki değişiklikleri işlemek için çalıştırın .

git status izlenmeyen dosyaların ve dizinlerin listesini de göstermelidir.

Depodaki gitignore tarafından yok sayılan tüm dosyaları listelemek isterseniz, çalıştırabilirsiniz:

git ls-files . --ignored --exclude-standard --others

Depodaki tüm izlenmeyen dosyaları listelemek istiyorsanız:

git ls-files . --exclude-standard --others

2
Aslında yok sayılmış dosyaları izlemek için "git add -f" yapmam gerekiyordu. Küresel görmezden gelme dosyasında bir girdi olduğu ortaya çıktı, bazı uygulamalar bilmeden benim için oraya koydu.
Paul Knopf

2

Benzer bir sorunla karşılaştım. .Dll dosyasını paket dizininden git'ime ekleyemiyorum, sonra gitignore_global.txt dosyasını buldum, çünkü sourcetree bu dosyayı otomatik olarak global git ignore ayarı olarak ekledi. Gitignore_global.txt dosyasından * .dll'yi kaldırdım ve çalışması benim için iyi.

Gitignore_global.txt dosyasının konumu aşağıdaki gibidir

C: \ Users \ XXXX \ Documents \ gitignore_global.txt veya bunu sourcetree TOOL => OPTION => GIT sekmesinden bulabilir ve genel yok sayma listesini bulabilirsiniz


1

Benim durumumda, .gitignore dosyasında .dll referansı yoktu ve global dosyam yoktu. Ancak .git alt dizininde ms-persist.xml adlı bir dosya buldum. Visual Studio'nun tüm örneklerini kapattım ve ardından eksik .dll'lerimi bu dosyaya manuel olarak ekledim. Visual stüdyosunu yeniden açtığımda, .dll'ler kontrol edilmeleri gerektiğini gösteriyordu. Onları kontrol ettim ve şimdi altınım ...


0

Projenizin köküne göre global bir .gitignoreyerde veya .gitignorealt dizinlerde başka dosyalarınız var.

Linux Sistemlerinde ve MacOS'ta küresel git-ignore büyük olasılıkla Evinizde ~/

~/.gitignore_global

Windows'ta muhtemelen Kullanıcı Dizininizdedir. Ya yerel kullanıcınız (yazarak ECHO %USERPROFILE%ya whoamida komut satırından öğrenebilirsiniz .

Eğer orada değilse, mutlaka .gitconfigonun yerine a vardır. Gitignore'un konumu için buraya bakın (örneğin, Kullanıcı Documentsklasörü).

Düzenle : git config --list --show-originKatkıda bulunan git ayarlarının ve bunlara karşılık gelen dosya konumlarının ayrıntılarını almak için kullanın .


0

Bu sorunun çok eski olduğunu biliyorum, ancak gelecekte bu soruyu ziyaret edebilecek başkaları için ekliyorum. Küresel yok sayma dosyanızı yukarıda belirtilen cevaplar gibi değiştirebilirsiniz, ancak bu TÜM git depolarınızı etkileyecektir. Bunun yerine, daha ayrıntılı bir yaklaşım istiyorsanız, yalnızca belirli DLL'leri veya bireysel projenizdeki .gitignores belirli klasörleri hariç tutabilirsiniz. Bu, tüm yok sayma ayarlarını geçersiz kılar ve dosyaları git tarafından algılanmaya ve işlenmeye zorlar. Bunun daha iyi bir yaklaşım olduğunu düşünüyorum.

.gitignore (özel projeniz için)

# Custom ignores
!*.dll
# or
!My.specific.dll

# rest of .gitignore
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.