Tidak, Anda tidak perlu menambahkan submodul Anda .gitignore
: apa yang akan dilihat orang tua dari submodul Anda adalah gitlink ( entri khusus,mode 160000
).
Artinya: setiap perubahan yang langsung dibuat di submodule harus diikuti dengan komit di direktori induk.
Dengan begitu, direktori induk akan merekam komit yang tepat untuk status submodule: Komit tersebut adalah "gitlink" yang disebutkan di atas;
Anda dapat membaca lebih lanjut tentang kebijakan itu di " git submodule update (sifat sebenarnya dari submodule) ".
Ide utama di balik submodul adalah pendekatan berbasis komponen , di mana Anda mereferensikan repo lain pada komit tertentu. Tetapi jika Anda mengubah apa pun di submodul tersebut, Anda juga perlu memperbarui referensi tersebut di repo induk.
Perhatikan bahwa dengan Git 2.13 (Q2 2017), meskipun tidak mengabaikan gitlink, Anda masih dapat mengabaikan submodul dengan:
git config submodule.<name>.active false
Lihat selengkapnya di " Abaikan komit baru untuk submodul git ".
Catatan: dengan Git 2.15.x / 2.16 (Q1 2018), mengabaikan submodul lebih tepat.
" git status --ignored --untracked
" tidak berhenti di pohon kerja dari proyek terpisah yang disematkan dalam direktori yang diabaikan dan file yang terdaftar di proyek lain itu, alih-alih hanya menampilkan direktori itu sendiri sebagai diabaikan.
Lihat commit fadb482 (25 Okt 2017) oleh Johannes Schindelin ( dscho
) .
(Digabung oleh Junio C Hamano - gitster
- di commit da7996a , 06 Nov 2017)
status
: jangan bingung dengan submodul di direktori yang dikecualikan
Kami dengan cermat meneruskan exclude
bendera ke treat_directory()
fungsi tersebut sehingga kami dapat menunjukkan bahwa file di dalamnya dikecualikan daripada tidak terlacak saat berulang.
Tapi kami belum memperlakukan submodul dengan cara yang sama.
Karena itu, git status --ignored --untracked
dengan submodul
submodule
di gitignored tracked/
akan menampilkan submodul di bagian " Untracked files
", mis.
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
tracked/submodule/
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/initial.t
Sebagai gantinya, kami ingin menampilkan submodul di bagian " Ignored files
":
On branch master
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/
.gitmodules
file. Memang benar bahwa file yang satu ini.gitmodules
mungkin menyertakan kredensial, tetapi jika digunakan hanya untuk mengkloning repo publik, file tidak harus menyertakannya. Selain itu, mereka tetap dapat di-cache, bahkan di Windows, dengan pembantu kredensial seperti "Git Credential Manager untuk Windows" ( github.com/Microsoft/Git-Credential-Manager-for-Windows/… ). Jadi memiliki kredensial.gitmodules
bukanlah sebuah kematian.Untuk beberapa alasan submodule.module-name.active tidak berfungsi untuk saya.
Itu sebabnya saya menggunakan submodule.module-name.ignore
https://git-scm.com/docs/gitmodules - di sini Anda dapat menemukan deskripsi nilai yang mungkin untuk parameter
Berfungsi untuk saya untuk pesan (komit baru) dan (konten yang dimodifikasi).
sumber
Untuk menambah jawaban yang diterima, saya telah menemukan bahwa menambahkan folder submodul Git ke .gitignore sebenarnya menyebabkan masalah - terutama ketika mencoba membuat tiruan baru dari proyek tersebut. Secara khusus, menjalankan perintah klon submodul normal mengakibatkan folder submodul menjadi kosong:
Hanya dengan mencoba menjalankan kembali
jelas apa masalahnya, berdasarkan output:
Alih-alih menambahkan
-f
, saya menghapus folder submodul Git dari .gitignore dan menjalankan kembali perintah klon submodul - yang sekarang berhasil membuat folder tersebut. Saya pikir mungkin ada bug di salah satu perintah klon submodule menghormati .gitignore tetapi tidak memperingatkan bahwa itu melewatkan submodul yang sesuai.sumber