Saya sepertinya tidak bisa menyingkirkan konten yang tidak terlacak dalam submodul Git. Menjalankan git status
hasil:
# Pada master cabang # Perubahan tidak dilakukan untuk melakukan: # (gunakan "git add ..." untuk memperbarui apa yang akan dilakukan) # (gunakan "git checkout - ..." untuk membuang perubahan dalam direktori kerja) # (komit atau buang konten yang tidak terlacak atau dimodifikasi dalam submodul) # # dimodifikasi: bundel / snipmate (konten yang tidak dilacak) # dimodifikasi: bundel / surround (konten tidak terlacak) # dimodifikasi: bundel / trailing-whitespace (konten tidak terlacak) # dimodifikasi: bundel / zencoding (konten yang tidak dilacak) # tidak ada perubahan yang ditambahkan ke komit (gunakan "git add" dan / atau "git commit -a")
Menambahkan --ignore-submodules
parameter menyembunyikan pesan-pesan ini; tapi saya bertanya-tanya apakah ada cara untuk menghilangkan kotoran ini dengan cara yang lebih cocok dan inti.
git
git-submodules
Tomer Lichtash
sumber
sumber
Jawaban:
Karena status git melaporkan konten yang tidak terlacak, cara sebenarnya untuk memiliki status bersih adalah dengan masuk ke masing-masing submodul tersebut dan:
.gitignore
spesifik untuk setiap modul..git/info/exclude
, seperti laporan peci1 di komentar .atau menambahkan kotor dengan spesifikasi submodule, sebagaimana disebutkan dalam ezraspectre 's jawaban (upvoted).
atau tambahkan file global
.gitignore
(sering~/.gitignore-global
). Suka misalnya.DS_Store
atau dalam kasus sayaCarthage/Build
seperti yang dilaporkan oleh Marián Černý di komentar . Lihat.gitginore
halaman manual :sumber
.DS_Store
file telah secara otomatis dibuat (oleh OS X) di salah satu submodul saya, mencegah saya melakukan proyek utama. Arg! Saatnya memperbarui.gitignore
....git/info/exclude
dan tambahkan baris abaikan di sana (berfungsi seperti .gitignore, tetapi bukan bagian dari repositori bersama).Saya menemukan posting blog ini berfungsi secara keseluruhan. Dengan menambahkan
ignore = dirty
opsi ke masing-masing entri dalam.gitmodules
file.sumber
ignore = untracked
juga ada, dan menunjukkan file yang dilacak yang dimodifikasi, tetapi tidak file yang tidak terlacak. Akan lebih baik jika ada pengaturan global untuk ini untuk semua submodules ...Anda juga dapat pergi ke setiap dir submodule dan bertindak sebagai git yang terpisah. Sebagai contoh:
... / dapatkan daftar file yang dimodifikasi /
Anda juga dapat memperbarui repo submodule jarak jauh Anda dengan
Lagipula
sumber
git add .
tanpa meninjau file yang dimodifikasi. Sebagian besar waktu, perubahan yang dibuat adalah.DS_Store
file yang ditambahkan - ini mungkin harus ditangkap oleh Anda.gitignore
, seperti zourtney disebutkan dalam komentar pertama untuk jawabannya.git submodule update --force
.Bisa jadi karena
detached HEAD
di cabang submodule Anda. Jika ini masalahnya, masuk ke jalur submodule Anda (misalnya:)./bundle/snipmate
, kemudian jalankangit checkout master
.sumber
Saya terjebak pada masalah ini kemarin, dalam sebuah proyek yang memiliki hampir 12 submodul.
git status
sedang menunjukkan output.Untuk mengatasi kesalahan konten yang tidak terlacak, saya harus menghapus file yang tidak terlacak dari semua submodul (semuanya adalah
*.pyc
,*.pyo
file yang dihasilkan oleh python) menggunakan a.gitignore
.Untuk menyelesaikan yang lain, saya harus menjalankan
git submodule update
yang memperbarui masing-masing submodul.sumber
Dalam situasi saya, saya mengkloning modul sebagai titik awal untuk modul baru di lingkungan ZF2 saya. Apa yang dilakukan adalah meletakkan folder .git sendiri ke dalam direktori.
Solusi dalam hal ini adalah menghapus folder .git (Anda mungkin perlu menampilkan file tersembunyi untuk melihatnya).
sumber
Ini mungkin terjadi ketika Anda memiliki .git [folder tersembunyi] lain di dalam folder tertentu ..
diubah: ./../ .. (konten yang dimodifikasi, konten yang tidak terlacak)
pastikan sub-direktori Anda tidak mengandung folder .git ini.
Jika demikian, masalahnya dapat diatasi dengan menghapus folder .git secara manual dari sub direktori.
sumber
Saya lebih suka menggunakan SourceTree , jadi solusi bagi saya adalah membuka repo submodule di SourceTree yang menunjukkan kepada saya daftar semua file yang tidak terlacak. Saya kemudian mengelompokkan mereka semua kemudian menggunakan "Hapus".
Saya dapat melakukan ini karena saya tahu semua file yang tidak terlacak sebenarnya tidak diperlukan.
sumber
Ini berhasil bagi saya:
Jika tidak bekerja dengan
pathname
, coba nama file. Beri tahu saya jika ini juga berhasil untuk Anda.sumber
Jika ini adalah masalah sementara, Anda bisa masuk ke folder submodule dan menjalankan
git reset HEAD --hard
tetapi Anda akan kehilangan semua perubahan Anda di dalam submodule.sumber