Suatu saat (sekitar rilis 1.6.x, saya pikir) git menyadari perubahan di dalam submodul. Itu hanya mengganggu saya:
vendor status $ git | grep dimodifikasi: # dimodifikasi: vendor / rails (konten yang dimodifikasi)
vendor $ git diff / diff --git a / vendor / rails b / vendor / rails --- a / vendor / rails +++ b / vendor / rails @@ -1 +1 @@ -Subproyek commit 046c900df27994d454b7f906caa0e4226bb42b6f + Komit subproyek 046c900df27994d454b7f906caa0e4226bb42b6f-dirty
Tolong hentikan?
Edit:
Oke, jadi saya punya jawaban. Sekarang saya punya pertanyaan lain:
Bisakah saya memasukkan ini ~/.gitconfig
? Dari awal saya tampaknya saya tidak bisa, dan saya tidak melihat sesuatu yang menjanjikan dengan membaca sekilas tambalan. (Saya kira saya masih bisa membuat alias.)
Jawaban:
Bahkan ada kemungkinan untuk mengatur mode abaikan untuk setiap submodule yang ditambahkan dalam file .gitmodules.
Baru hari ini saya mengalami masalah ini dan langsung menulis artikel di blog saya tentangnya setelah menemukan solusi: Bagaimana cara mengabaikan perubahan pada git submodules
Intinya:
Cukup tambahkan satu baris ke
.gitmodules
file itu:sumber
git status
bekerja seperti yang diharapkan. Anda juga membutuhkan setidaknya 1.7.4 atau lebih baik saya percaya..gitignore
file tersebut, ada versi pribadi yang disebutexclude
, terletak di.git/info/
, yang bukan versi yang ditangani. Apakah ada file yang sesuai untuk.gitmodules
file tersebut, yang akan memungkinkan Anda menyembunyikan perubahan dalam submodule hanya dalam instance Anda dari repositori induk, tanpa melakukan perubahan.gitmodules
?Ada dua jenis pemberitahuan perubahan yang dapat Anda tekan.
Yang pertama
untracked content
terjadi saat Anda membuat perubahan pada submodul Anda, tetapi belum melakukannya. Repositori induk memperhatikan ini dangit status
melaporkannya sesuai:modified: modules/media (untracked content)
Anda dapat menekannya dengan:
Namun, setelah Anda melakukan perubahan itu, repositori induk akan sekali lagi memperhatikan dan melaporkannya sesuai:
Jika Anda ingin menyembunyikannya juga, Anda perlu mengabaikan
all
perubahansumber
.gitignore
file tersebut, ada versi pribadi yang disebutexclude
, terletak di.git/info/
, yang bukan versi yang ditangani. Apakah ada file yang sesuai untuk.gitmodules
file tersebut, yang akan memungkinkan Anda menyembunyikan perubahan dalam submodule hanya dalam instance Anda dari repositori induk, tanpa melakukan perubahan.gitmodules
?ignore = all
itu berguna.Update: Lihat (dan upvote) nilshaldenwang 's jawaban mengenai kemungkinan untuk menambah
.gitmodules
file parameter konfigurasi untuk mengabaikan keadaan kotor dari submodule diberikan.Jadi git 1.7.2 sudah keluar dan menyertakan
--ignore-submodules
opsi untukstatus
.Dari
git help status
:Nilai yang saya inginkan adalah
dirty
.Saya menggunakan alias karena saya malas:
sumber
ignore=dirty
entri individu dalam.gitmodules
file di sini.Seperti yang Anda sebutkan, patch git submodule: abaikan submodul kotor untuk ringkasan dan status sedang dibuat.
Juga diumumkan dalam rilis Git 1.7.2-rc2 :
Berarti:
Menganggap ini sebagai opsi bukanlah pendekatan yang dipilih untuk saat ini :
"
git diff
" dan "git status
" akan menggunakan nilai konfigurasi tersebut untuk setiap submodul.Menggunakan "
--ignore-submodule
" menimpa default ini (dan parameter baru "tidak ada" akan ditambahkan di sana untuk dapat mengganti setelan konfigurasi).Pendekatan lain untuk membuat status git (atau perintah git apa pun) untuk mengabaikan submodul tertentu tersedia dengan Git 2.13 (Q2 2017):
Lihat selengkapnya di " Abaikan komit baru untuk submodul git ".
sumber
ignore = dirty
"Anda juga bisa menggunakan
untuk mengatur file
submodule.ignore = dirty
Anda.git/config
.--global
akan menyetel bendera abaikan di Anda~/.gitconfig
dan berlaku untuk semua repositori Anda. Tanpanya itu harus diatur.git/config
hanya untuk repo Anda saat ini.Satu-satunya dokumentasi yang dapat saya temukan tentang hal ini ada
submodule.<name>.ignore
di dokumen git-config . Saya memindahkannya dari file .gitmodules ke ~ / .gitconfig saya dan itu masih berfungsi untuk saya.sumber
Anda perlu menambahkan
ke .gitmodules
sumber
Jadi git v1.7.2-rc2 memiliki apa yang saya inginkan:
Membangun git howto Anda sendiri:
sumber
git clone git://git.kernel.org/pub/scm/git/git.git git
.Saya telah menjawab pertanyaan ini di sini dengan lebih rinci.
Lari saja
untuk menambahkan opsi konfigurasi lokal untuk mengabaikan perubahan tersebut.
sumber
Anda mungkin tidak ingin menambahkan
ignore = dirty
untuk.gitmodules
, Anda mungkin ingin lebih selektif tentang perubahan yang Anda ingin mengabaikan.Untuk melakukan itu, tambahkan pola ke
.git/submodule_foo/bar/info/exclude
, di manasubmodule_foo/bar/
jalur submodul.Polanya mirip dengan pola yang akan Anda tambahkan
.gitignore
, dengan root menjadi direktori submodul. Misalnya, pola ini mengabaikanbuild
direktori di submodulesubmodule_foo/bar/
:sumber