
Sering terjadi bahwa seorang pengembang dari waktu ke waktu mengumpulkan beberapa kumpulan kode yang ia gunakan dalam proyek-proyeknya.
Dia menggunakan beberapa skrip di beberapa proyek, yang lain di yang lain.
Skrip ini diperbaiki seiring waktu, bug dihilangkan, dan dioptimalkan. Oleh karena itu, muncul pertanyaan tentang
bagaimana menyinkronkan versi skrip baru dengan skrip yang ada dalam proyek .
Ada beberapa opsi:
Opsi pertama:Buat satu repositori dan letakkan semua skrip di sana. Kemudian repositori ini terhubung sebagai submodule ke proyek dan digunakan.
Cons:
- Semua skrip, termasuk yang tidak perlu, disalin ke proyek.
- submodule tidak berkomitmen untuk repositori proyek, jadi jika repositori jarak jauh dari submodule tidak tersedia, kami tidak akan dapat mengunduh seluruh proyek.
Opsi kedua:Setiap skrip harus disimpan secara terpisah pada inti Github dan dihubungkan sesuai kebutuhan sebagai submodul
Nilai minusnya sama dengan versi pertama pada paragraf kedua.
Opsi ketiga:Gunakan
Git Subtree.(Solusi ini merupakan alternatif untuk submitran Git)
Git subtree adalah metode lain untuk menggabungkan cabang. Idenya adalah memiliki dua cabang, git akan mengerti bahwa satu cabang bukan variasi dari yang lain, tetapi tambahan.
Ide umum:
- - tambahkan file ke inti Github (repositori mini dihasilkan)
- - ikat repositori mini ke proyek kami sebagai cabang terpisah
- - menetapkan folder untuk cabang ini
- - mengempis.
- - lalu kita bekerja seperti dengan cabang biasa (gabung, komit, ambil ...)
Sekarang detail menggunakan ekstensi Git.
1) Kami menerbitkan file kami dengan kode di
https://gist.github.com di mana kami dapat langsung mendapatkan tautan ke repositori "mini":

Buka repositori proyek kami di GitExtensions dan pilih:
[Repositori] -> [Repositori jauh ...]
Kami terhubung sebagai cabang terpisah.
Untuk melakukan ini, tekan
[+] . Masukkan
[Nama] ,
[Url] dan simpan
[Simpan perubahan] :
$git remote add "Util1" "https://gist.github.com/cf056e792d3bd9c2fc5973b846efe3d3.git"

Kami melihat bahwa kami terhubung ke repositori jarak jauh.
Selanjutnya, kita perlu mengaitkan cabang ini dengan folder tertentu di proyek kita sehingga file tersebut disalin di sana.
Untuk melakukan ini, buka Git-bash (ctrl + G) dan jalankan perintah:
$git read-tree --prefix=Client/Assets/ -u Util1/master
dimana:
Klien / Aset / - path ke folder tempat file akan disalin
Util1 / master - nama cabang repositori jarak jauh
(Saya tidak menemukan jalan melalui UI)
Cabang inti menjadi melekat pada folder kami di proyek. Dan file sudah ada di sana.
Sekarang kita bisa bekerja dengan cabang biasa.Misalnya, jika file berubah di Gist, kita bisa mendapatkan versi baru:
Kami
mengambil semua dan melihat semua perubahan:
$git fetch --progress "--all"
Kemudian kami bergabung untuk mengisi perubahan di cabang kami:
$git merge -s subtree --no-ff --allow-unrelated-histories Util1/master

Hasil:
Informasi tambahan:https://git-scm.com/book/en/v1/Tools-Git-Merging-treeshttps://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtreehttps://www.nwcadence.com/blog/git-subtrees