Saya agak bingung tentang pro dan kontra menggunakan .git/info/exclude
dan .gitignore
mengecualikan file.
Keduanya berada pada level repositori / proyek, lalu bagaimana perbedaannya dan kapan harus digunakan .git/info/exclude
?
Keuntungannya .gitignore
adalah dapat diperiksa ke dalam repositori itu sendiri, tidak seperti .git/info/exclude
. Keuntungan lainnya adalah Anda dapat memiliki banyak .gitignore
file, satu di dalam setiap direktori / subdirektori untuk aturan pengabaian khusus direktori, tidak seperti .git/info/exclude
.
Jadi, .gitignore
tersedia di semua klon repositori. Oleh karena itu, dalam tim besar semua orang mengabaikan yang sama file Contoh *.db
, *.log
. Dan Anda dapat memiliki aturan pengabaian yang lebih spesifik karena beberapa .gitignore
.
.git/info/exclude
hanya tersedia untuk klon individu, sehingga apa yang diabaikan oleh satu orang dalam klonnya tidak tersedia di klon orang lain. Misalnya, jika seseorang menggunakan Eclipse
untuk pengembangan, mungkin masuk akal bagi pengembang tersebut untuk menambahkan .build
folder ke .git/info/exclude
karena pengembang lain mungkin tidak menggunakan Eclipse.
Secara umum, file / abaikan aturan yang harus diabaikan secara universal harus masuk .gitignore
, dan jika tidak file yang ingin Anda abaikan hanya pada klon lokal Anda harus masuk ke.git/info/exclude
~/.gitignore
dalam komentar Anda di atas. Pemahaman saya adalah bahwa abaikan aturan dapat berada di 3 level -$PROJECT/.git/info/exclude
untuk aturan abaikan khusus (proyek, pengguna),$PROJECT/<any number of directories>/.gitignore
yang untuk aturan abaikan khusus proyek di semua pengguna di mana pun (saat check in),~/.gitignore
untuk aturan abaikan khusus pengguna untuk proyek apa pun untuk pengguna itu di mesin itu. Berdasarkan tujuannya, Anda memilih tempat untuk memasukkan entri.git rm --cached <path-name>
akan menghapusnya dari repositori, tetapi menyimpannya secara lokal.git update-index --skip-worktree <path-name>
akan mengabaikan perubahan pada file, tetapi menyimpannya dalam repositori. Karena penasaran: Mengapa Anda ingin file sln dikecualikan? Ini adalah bagian penting dari solusi .Net, bukan?Di Google: 3 cara mengecualikan file
.gitignore
berlaku untuk setiap klon dari repositori ini (berversi, semua orang akan memilikinya),.git/info/exclude
hanya berlaku untuk salinan lokal Anda dari repositori ini (lokal, tidak dibagikan dengan orang lain),~/.gitignore
berlaku untuk semua repositori di komputer Anda (lokal, tidak dibagikan dengan orang lain).3.
sebenarnya perlu menyetel konfigurasi di komputer Anda:sumber
.git/info/excludes
, padahal seharusnya.git/info/exclude
, seperti yang dikonfirmasi oleh dokumentasi yang ditautkannya .Hanya untuk menawarkan pengalaman (dunia nyata) kami: kami mulai menggunakan .git / info / exclude ketika kami harus menyesuaikan beberapa file konfigurasi di setiap lingkungan pengembangan tetapi masih ingin sumbernya dipertahankan dalam repo dan tersedia untuk pengembang lain.
Dengan cara ini, file lokal, setelah dikloning dan dimodifikasi dapat dikeluarkan dari komit tanpa mempengaruhi file asli di repo tetapi juga tanpa harus diabaikan di repo.
sumber
Gunakan
.gitignore
untuk mengabaikan aturan yang khusus untuk proyek . Gunakanexclude
atau file abaikan global untuk mengabaikan aturan yang khusus untuk lingkungan Anda .Misalnya, file abaikan global saya mengabaikan file temp yang dibuat oleh editor apa pun yang saya gunakan — aturan itu khusus untuk lingkungan saya, dan mungkin berbeda untuk beberapa pengembang lain di proyek yang sama (mungkin mereka menggunakan editor yang berbeda). OTOH,
.gitignore
file proyek saya mengabaikan hal-hal seperti kunci API dan artefak build — itu untuk proyek , dan harus sama untuk semua orang di proyek.Apakah itu membantu?
sumber