Bagaimana cara mengganti submodul git dengan repo git yang berbeda?
Secara khusus, saya memiliki submodul:
- terletak di
./ExternalFrameworks/TestFramework
titik itu ke repo git[email protected]:userA/TestFramework.git
- Sekarang saya ingin menunjukkannya
[email protected]:userB/TestFramework.git
.
Masalahnya adalah ketika saya menghapus submodule dengan metode yang dijelaskan di sini , lalu menambahkannya kembali menggunakan perintah
git submodule add [email protected]:userB/TestFramework.git
Saya mendapatkan kesalahan ini:
A git directory for 'ExternalFrameworks/TestFramework' is found locally with remote(s):
origin [email protected]:userA/TestFramework.git
If you want to reuse this local git directory instead of cloning again from
[email protected]:userB/TestFramework.git
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.
git
git-submodules
joseph.hainline
sumber
sumber
Jawaban:
Jika lokasi (URL) dari submodule telah berubah, maka Anda dapat dengan mudah:
.gitmodule
file Anda untuk menggunakan URL barurm -rf .git/modules/<submodule>
rm -rf <submodule>
git submodule sync
git submodule update
Info lebih lengkap dapat ditemukan di tempat lain:
sumber
rm -rf .git/modules/<submodule>
sebelum itu berhasil untuk saya.git submodule sync
setelahrm -rf .git/modules/<submodule>
memberifatal: Not a git repository: ../.git/modules/<submodule>
. Ada tips? Saya awalnya membuat submodul melaluigit submodule add https://<submodule-url>
sesuai dengan dokumen git ...Pertama, hapus submodul saat ini dengan metode yang telah disebutkan di sini , yang saya sertakan untuk kenyamanan:
.gitmodules
file.git/config
git rm --cached path_to_submodule
(tidak ada garis miring)Sekarang, tambahkan submodul baru dengan
--name
bendera. Ini akan memberi git nama alternatif untuk referensi.git/config
untuk submodul, untuk mendekonflikasikan dengan submodul yang ada di sana secara historis, yang masih ingin Anda kerjakan di riwayat sebelumnya.Jadi ketik:
dan Anda akan mendapatkan submodul dimuat di jalur yang Anda harapkan.
sumber
.git/modules/<path_to_submodule>
.--name
. Saya tidak mengetahui masalah seputar ini, dan saya tidak dapat mengganti submodule sampai saya menggunakan opsi ini (terima kasih atas jawaban Anda).git submodule add --name old-name-to-keep [email protected]:userB/new-repository.git old-name-to-keep
Perintah ini akan bekerja pada command prompt tanpa mengubah file apa pun di repositori lokal.
sumber
Apa yang memperbaiki ini untuk saya adalah di root repo git Anda (bukan submodul), jalankan
Maka Anda harus bisa menambahkan seperti biasa.
sumber
Cara termudah yang saya temukan adalah ini:
Saya tidak suka ide untuk memodifikasi
.gitmodules
manual saya . Saya juga menulis sedikit posting blog tentang itu.sumber
Jika Anda ingin mengubah URL jarak jauh hanya untuk klon ini :
Ini tidak akan memengaruhi
.gitmodules
file di proyek induk, jadi tidak akan disebarkan ke pengembang lain.Ini dijelaskan sebagai "perubahan data khusus pengguna" di sini .
Jangan dijalankan
git submodule sync
karena itu akan mengatur ulang ke URL default lagi.sumber