Seperti yang disebutkan dalam posting blog Mark Longair, Git Submodules Dijelaskan ,
Versi 1.7.0 dan yang lebih baru dari git berisi perubahan yang mengganggu dalam perilaku submisi git.
Submodules sekarang dianggap kotor jika mereka memiliki file yang dimodifikasi atau file yang tidak terlacak , sedangkan sebelumnya hanya akan menjadi kasus jika KEPALA dalam submodule menunjuk komit yang salah.
Arti tanda tambah ( +
) dalam output dari submitule git telah berubah, dan pertama kali Anda menemukan ini, perlu sedikit waktu untuk mencari tahu apa yang salah, misalnya dengan melihat melalui changelogs atau menggunakan git bisect pada git .git untuk menemukan perubahannya. Akan jauh lebih baik bagi pengguna untuk memperkenalkan simbol yang berbeda untuk "pada versi yang ditentukan, tetapi kotor".
Anda dapat memperbaikinya dengan:
baik melakukan atau membatalkan perubahan / evolusi dalam setiap submodul Anda, sebelum kembali ke induk repo (di mana diff seharusnya tidak melaporkan file "kotor" lagi). Untuk membatalkan semua perubahan pada submodule Anda, cd
masuk ke direktori root dari submodule Anda dan lakukangit checkout .
komentar dotnetCarpenter yang dapat Anda lakukan:git submodule foreach --recursive git checkout .
atau tambahkan --ignore-submodules
ke git diff
, untuk sementara waktu mengabaikan submodul yang "kotor" itu.
Baru di Git versi 1.7.2
Seperti komentar Noam di bawah , pertanyaan ini menyebutkan bahwa, sejak git versi 1.7.2, Anda dapat mengabaikan submodul kotor dengan:
git status --ignore-submodules=dirty
git commit -a
tanpa harus khawatir menambahkan perubahan ini. Meskipun mereka ditandai denganM
di depan, mereka tidak akan berakhir di komit Anda.