git repository mengabaikan semua .dlls

88

Judul menjelaskan semuanya. Saya mencoba menambahkan paket NuGet saya ke repositori. Semuanya kecuali file .dll sedang terdeteksi.

File gitignore tidak berisi referensi ke * .dll. File .dll tidak dikenali saat berada di mana pun di seluruh repositori. info / exclude juga kosong.

Saya juga telah mengkloning repositori (sistem file ke sistem file sebagai lawan dari remote ke file-sysytem) tanpa hasil. Masalah ini juga terjadi di dua komputer berbeda.

Saya dapat menambahkan file .dll secara manual, tetapi mereka harus dilacak. Mengapa mereka tidak dilacak?

Paul Knopf
sumber
26
Apa yang git config --get core.excludesfiledikatakannya?
Antony Hatchkins
2
Juga secara umum bukan ide yang baik untuk menggunakan git untuk melacak file biner karena git tidak dapat menghitung delta antar revisi secara efisien sehingga menyimpan semua versi akan sia-sia jika ada ruang. Jika dll dibuat dengan cepat, lebih baik mengabaikannya di git. Jika tidak - lebih baik menggunakan mekanisme sinkronisasi lain (mis. Rsync).
Antony Hatchkins
Ini adalah paket NuGet yang saya coba tambahkan ke git. Saya tidak menggunakan fungsi "Pemulihan Paket" dari NuGet jadi saya perlu seluruh folder paket diperiksa.
Paul Knopf

Jawaban:

121

Apakah Anda memiliki salah satu ~/.gitignore_globalatau ~/.gitignoredi direktori home Anda yang juga dapat mencantumkan pola file ini?

Lihat https://help.github.com/articles/ignoring-files

Stuart M
sumber
6
Mengingat bahwa dia bekerja dengan file dll, dia menggunakan platform Windows, jadi ~ berarti $ HOMEDRIVE $ HOMEPATH di bawah Windows 7
Antony Hatchkins
9
Ternyata inilah masalahnya. Saya tidak menambahkan file abaikan global ini. Ada alasan mengapa itu muncul begitu saja? Sekarang saya memikirkannya, saya baru saja menginstal SourceTree (dari Atlassian). Mungkinkah pelakunya?
Paul Knopf
6
Saya memiliki masalah yang sama, saya juga menginstal SourceTree sebelumnya. Jadi saya kira itu adalah tebakan yang adil bahwa SourceTree menambahkan file abaikan global karena dulu berfungsi di masa lalu.
Andreas Krebs
8
Sunting: Oke, itu ditambahkan oleh tautan
Andreas Krebs
31
Saya harus lari git check-ignoreuntuk mencari tahu di mana file itu. Suka di ~ / Documents / gitignore_global.txt
Matt Canty
98

Jika Anda menggunakan SourceTree dan pengaturan default akan mengabaikan semua DLL secara default ... Tools => Options => Git lalu "Edit File" ... tambahkan "#" sebelum .dll => "# .dll" .. . Simpan dan tutup.

Kemudian untuk Windows Explorer di folder paket Anda, buka terminal GitBash dan ketik "git add." dan biarkan bekerja, kembali ke SourceTree tunggu sebentar dan semua paket DLL yang hilang akan muncul untuk Anda komit dan dorong.

KevinB
sumber
13
Jawaban yang benar untuk pengguna SourceTree;)
jmpcm
Tahu tentang daftar abaikan global, tidak dapat menemukannya di GUI .. Terima kasih!
Christoph
Tools => Options => Git / Mercurial Global Ignore List ... Jika Anda tidak memilikinya, Anda dapat membuat dan mengarahkannya ke sana.
KevinB
2
Lokasi file: ~ / Documents / gitignore_global.txt
James McCormack
Ini berfungsi untuk pohon sumber, tetapi bagaimana untuk studio visual pengabaian tidak ada di gitignore saya. Setiap saya menggunakan pohon sumber untuk tugas ini
Demodave
11

Saya dapat menambahkan file .dll secara manual, tetapi mereka harus dilacak. Mengapa mereka tidak dilacak?

Tidak, mereka tidak boleh dilacak, kecuali Anda telah menambahkannya. Hanya file yang telah ditambahkan dan dikomit dilacak; itulah yang dimaksud dengan "dilacak".

Coba tambahkan secara manual salah satunya melalui git adddan itu akan memberi tahu Anda mengapa itu mengabaikannya, dan meminta Anda untuk menggunakan git add -funtuk menambahkan file itu.

meagar
sumber
Saya melakukan "git add '/ packages'" dan tidak mendeteksi .dlls. Saya kemudian menggunakan -f dan menambahkannya. Saya menemukan masalahnya. "* .dll" adalah pengabaian global saya. Tidak ada petunjuk dari mana asal pengabaian global ini.
Paul Knopf
2

Anda perlu memberi tahu git secara eksplisit untuk melacak file baru.

  1. Jalankan git add filenameuntuk menambahkan file ke indeks git.

  2. Jalankan git commituntuk melakukan perubahan dalam indeks Anda.

git status juga harus menampilkan daftar file dan direktori yang tidak terlacak.

Jika Anda ingin membuat daftar semua file di repo yang diabaikan oleh gitignore, Anda dapat menjalankan:

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

Jika Anda ingin membuat daftar semua file yang tidak terlacak di repo:

git ls-files . --exclude-standard --others
Tuxdude
sumber
2
Saya harus "git add -f" untuk melacak file yang sebenarnya diabaikan. Ternyata itu adalah entri di file abaikan global, yang beberapa aplikasi telah diletakkan di sana tanpa saya sadari.
Paul Knopf
2

Saya menghadapi masalah serupa. Saya tidak dapat menambahkan file .dll dari direktori paket ke git saya, kemudian saya menemukan file gitignore_global.txt karena sourcetree secara otomatis menambahkan file ini sebagai pengaturan global git ignore. Saya menghapus * .dll dari file gitignore_global.txt dan berfungsi dengan baik untuk saya.

Lokasi file gitignore_global.txt seperti di bawah ini

C: \ Users \ XXXX \ Documents \ gitignore_global.txt atau Anda dapat menemukannya dari sourcetree TOOL => OPTION => tab GIT dan temukan daftar abaikan global

Niraj Trivedi
sumber
1

Dalam kasus saya, tidak ada referensi .dll di file .gitignore, dan saya tidak memiliki file global. Namun pada subdirektori .git, saya menemukan sebuah file bernama ms-persist.xml. Saya menutup semua contoh Visual Studio, dan kemudian menambahkan .dlls saya yang hilang secara manual ke file itu. Ketika saya membuka kembali studio visual, .dlls menunjukkan perlu untuk diperiksa. Saya memeriksanya dan sekarang saya emas ...

Curtis
sumber
0

Anda memiliki file global di .gitignoresuatu tempat atau lebih jauh .gitignoredalam subdirektori - relatif terhadap root proyek Anda.

Pada Sistem Linux dan MacOS, git-ignore global kemungkinan besar ada di Rumah Anda ~/

~/.gitignore_global

Di Windows, kemungkinan ada di Direktori Pengguna Anda. Entah pengguna lokal Anda (yang dapat Anda temukan dengan mengetik ECHO %USERPROFILE%atau whoamidi baris perintah.

Jika tidak ada, maka pasti yang .gitconfighadir. Lihat di sini untuk lokasi gitignore (mis. DocumentsFolder Pengguna ).

Edit : Gunakan git config --list --show-originuntuk mendapatkan detail tentang kontribusi git-settings dan lokasi file yang sesuai.

Lorenz Lo Sauer
sumber
0

Saya tahu pertanyaan ini sudah sangat tua, tetapi saya menambahkan untuk orang lain yang mungkin mengunjungi pertanyaan ini di masa mendatang. Anda dapat memodifikasi file abaikan global Anda seperti jawaban yang disebutkan di atas, tetapi itu akan memengaruhi SEMUA repo git Anda. Sebaliknya, jika Anda menginginkan pendekatan yang lebih terperinci, Anda dapat mengecualikan DLL tertentu atau folder tertentu di masing-masing proyek .gitignores. Ini mengesampingkan semua pengaturan abaikan dan memaksa file untuk dideteksi dan ditangani oleh git. Saya pikir ini adalah pendekatan yang lebih baik.

.gitignore (untuk proyek khusus Anda)

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

# rest of .gitignore
jp36
sumber