Saya baru mengenal git dan kontrol versi, jadi saya mencoba mencari tahu apa itu tambalan dan apa bedanya dengan kegiatan yang saya lakukan di git?
Kapan saya menerapkan tambalan? Apakah itu terjadi setiap kali saya berkomitmen?
sumber
Saya baru mengenal git dan kontrol versi, jadi saya mencoba mencari tahu apa itu tambalan dan apa bedanya dengan kegiatan yang saya lakukan di git?
Kapan saya menerapkan tambalan? Apakah itu terjadi setiap kali saya berkomitmen?
Anda dapat melihat di posting blog ini bagaimana Anda bisa membuat tambalan (kumpulan perubahan yang ingin Anda komunikasikan dan terapkan ke repo lain)
(gambar dari posting blog 2008 " Bioruby with git: bagaimana cara kerjanya? ", diterbitkan oleh Jan AERTS )
Lihat juga Berkontribusi pada Rails dengan Git sebagai contoh konkret lainnya.
Saat ini, permintaan tarik GitHub membuatnya sangat mudah untuk menerapkan tambalan pada repositori GitHub, yang berguna ketika Anda bukan kontributor langsung (yaitu Anda tidak memiliki hak untuk langsung mendorong ke repo).
Sebenarnya, baru-baru ini GitHub memperkenalkan " Email Permintaan Tarik yang Lebih Baik " untuk meningkatkan pemberitahuan tambalan baru.
Patch adalah program Unix yang memperbarui file teks sesuai dengan instruksi yang terkandung dalam file terpisah, yang disebut file patch.
Jadi, dengan kata lain itu bisa berarti file dengan instruksi atau program yang memproses file itu dan menerapkannya pada sesuatu.
Sekarang, apa itu file tambalan? Katakanlah Anda memiliki file teks dengan 2 baris:
Kemudian Anda mengubah baris pertama, dan sekarang file Anda terlihat seperti ini:
Bagaimana Anda menggambarkan perubahan pada isi file? Anda dapat mengatakan bahwa baris pertama "Ini adalah baris A." diganti dengan "Ini SPARTA.", atau bahkan kata terakhir "A" dari baris pertama diganti dengan kata lain "SPARTA". Dan itulah yang diff memberitahu kita. Katakanlah saya memiliki dua versi file ini, satu disebut file1.txt dan satu lagi file2.txt, lalu saya jalankan diff dan dapatkan ini:
Memiliki deskripsi perubahan, Anda dapat menerapkannya pada konten awal dan mendapatkan konten yang dimodifikasi. Dan perubahan-perubahan itu, dimasukkan ke dalam format terpadu yang dapat dimengerti oleh program mirip "patch", disebut file patch. Ini seperti alih-alih mendapatkan ikan dari seseorang yang mereka ajari cara memancing, sehingga Anda bisa menggali sendiri ikan itu dari perairan. Sekarang, mari kita terapkan tambalan kami ke file1.txt agar terlihat persis seperti file2.txt:
Anda mungkin berpikir bahwa lebih mudah memiliki dua versi file ini. Nah, dalam kasus sederhana ini itu benar. Tetapi ketika Anda memiliki banyak file, dan file-file itu sangat besar, itu jauh lebih efisien untuk memiliki beberapa baris perubahan daripada dua salinan dari semuanya.
Ketika berbicara dalam istilah git, file patch masih berarti hal yang sama, tetapi menggunakan diff + patch sendiri akan menjadi mimpi buruk. Misalnya, Anda harus selalu memeriksa dua versi file (atau bahkan seluruh repositori) untuk membandingkannya. Kedengarannya tidak bagus, bukan? Jadi git menangani semua kerja keras untuk Anda - ia membandingkan file lokal Anda dengan apa yang ada dalam repositori yang sedang Anda kerjakan, dan dapat menunjukkannya kepada Anda sebagai "diff", atau menerapkan "diff" itu sebagai patch alias melakukan perubahan Anda, atau bahkan membiarkan Anda menerapkan beberapa file patch yang sudah Anda miliki. Tanpa merinci lebih jauh, dalam hal ini git benar-benar sama dengan sistem kontrol versi lain seperti SVN, atau bahkan CVS atau terpaksa.
Semoga ini bisa membantu!
sumber
patch
program bawaan. Saya pikir git memiliki implementasi sendiri.Patch adalah file kecil yang menunjukkan perubahan yang dibuat dalam repositori. Ini umumnya digunakan ketika seseorang dari luar tim Anda memiliki akses hanya baca tetapi memiliki perubahan kode yang baik tersedia. Dia kemudian membuat tambalan dan mengirimkannya kepada Anda. Anda menerapkannya dan mendorongnya ke repositori git. Semua orang kemudian mendapat manfaat dari versi yang diperbarui, dan pembuat tambalan tidak perlu akses baca / tulis.
Ini benar-benar terutama masalah keamanan (setidaknya, untuk itulah orang menggunakannya).
sumber
git diff
menunjukkan perubahan sebagai tambalan secara default,git apply
memungkinkan Anda menerapkan tambalan, dll.).File tambalan mewakili satu set perubahan yang dapat diterapkan ke cabang apa pun, dalam urutan apa pun. Dengan menggunakan tambalan, Anda akan mendapatkan perbedaan antara satu atau lebih file. Dan nanti, Anda bisa menerapkan perbedaan (tambalan) untuk mendapatkan perubahan pada file baru. Ada banyak kegunaan untuk tambalan di Git. Jika Anda memiliki perubahan yang tidak dikomit di direktori kerja Anda, dan Anda perlu mendapatkan perubahan itu untuk diterapkan di tempat lain, cukup buat tambalan dan terapkan tambalan.
Jika Anda memiliki file baru di repositori Anda (tidak dilacak), maka Anda harus membuat stage file sebelum membuat patch (jangan komit), dan gunakan perintah berikut
Anda nanti dapat menerapkan tambalan:
Jika Anda ingin membuat beberapa perubahan pada repositori git, bahwa Anda tidak memiliki izin menulis, buat saja perubahan dan buat tambalan di antara keduanya, dan kirim tambalan kepada seseorang yang memiliki izin untuk menerapkan tambalan, dengan ini perubahan Anda harus ditambahkan ke repositori git itu.
sumber
git format-patch <base_commit_or_branch_name>
= bungkus semua komit mulai dari sekarang kembali ke <base_commit_or_branch_name> menjadi file yang bagus dan rapi yang berisi diff serta pesan komit, untuk memudahkan pengiriman (mis .: melalui email) ke orang lain yang ingin menambalnya ke basis kode mereka. Kemudian penerima menambal sistem mereka dengan file Anda:cat *.patch | git am
Patch adalah sekumpulan perbedaan antara satu atau lebih file, untuk menunjukkan apa yang berbeda di antara mereka. Anda biasanya hanya menghasilkan tambalan untuk menunjukkan kepada seseorang apa yang telah Anda ubah. Contoh kapan Anda mungkin melakukan ini adalah ketika Anda menemukan dan memperbaiki bug dalam aplikasi open source dan kemudian memposting perbaikan pada pelacak bug mereka.
sumber