Kontrol versi file individual menggunakan GitHub Gist

gambar

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:

  1. Semua skrip, termasuk yang tidak perlu, disalin ke proyek.
  2. 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:

  1. - tambahkan file ke inti Github (repositori mini dihasilkan)
  2. - ikat repositori mini ke proyek kami sebagai cabang terpisah
  3. - menetapkan folder untuk cabang ini
  4. - mengempis.
  5. - 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":

gambar

Buka repositori proyek kami di GitExtensions dan pilih:

[Repositori] -> [Repositori jauh ...]

gambar

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" 

gambar

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 

gambar

gambar

Hasil:

gambar

Informasi tambahan:

https://git-scm.com/book/en/v1/Tools-Git-Merging-trees
https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree
https://www.nwcadence.com/blog/git-subtrees

Source: https://habr.com/ru/post/id419925/


All Articles