Anda tidak dapat selalu membuat cabang atau menarik cabang yang ada dan mendorongnya ke belakang, karena Anda tidak terdaftar sebagai kolaborator untuk proyek spesifik itu.
Forking tidak lebih dari sebuah klon di sisi server GitHub :
- tanpa kemungkinan untuk langsung mendorong kembali
- dengan fitur antrian fork ditambahkan untuk mengelola permintaan penggabungan
Anda tetap menyelaraskan garpu dengan proyek asli dengan:
- menambahkan proyek asli sebagai remote
- mengambil secara teratur dari proyek asli itu
- rebase perkembangan Anda saat ini di atas cabang minat yang Anda perbarui dari pengambilan itu.
Rebase memungkinkan Anda untuk memastikan bahwa perubahan Anda mudah (tidak ada konflik penggabungan yang harus ditangani), membuat permintaan penarikan Anda menjadi lebih mudah ketika Anda ingin pengelola proyek asli menyertakan patch Anda di proyeknya.
Tujuannya adalah untuk memungkinkan kolaborasi meskipun partisipasi langsung tidak selalu memungkinkan.
Fakta bahwa Anda mengkloning di sisi GitHub berarti Anda sekarang memiliki dua repositori "sentral" ("sentral" sebagai "terlihat dari beberapa kolaborator).
Jika Anda dapat menambahkannya secara langsung sebagai kolaborator untuk satu proyek, Anda tidak perlu mengelola yang lain satu dengan garpu.
Pengalaman penggabungan akan hampir sama, tetapi dengan tingkat tipuan ekstra (dorong terlebih dahulu pada garpu, lalu minta tarikan, dengan risiko evolusi pada repo asli membuat penggabungan maju Anda tidak maju cepat lagi) .
Itu berarti alur kerja yang benar adalah git pull --rebase upstream
(rebase pekerjaan Anda di atas komit baru dari hulu), dan kemudian git push --force origin
, untuk menulis ulang sejarah sedemikian rupa, komit Anda sendiri selalu di atas komit dari repo asli (hulu) .
Lihat juga:
Inilah perbedaan tingkat tinggi:
Forking
Pro
Cons
Percabangan
Pro
Cons
sumber
write
izin di repositori.Ini ada hubungannya dengan alur kerja umum Git. Anda tidak mungkin dapat mendorong langsung ke repositori proyek utama. Saya tidak yakin apakah repositori mendukung kontrol akses berbasis cabang proyek GitHub, karena Anda tidak ingin memberikan izin kepada siapa pun untuk mendorong ke cabang master misalnya.
Pola umum adalah sebagai berikut:
Tanpa ini, sangat umum bagi proyek publik untuk membiarkan siapa pun mendorong komitmen mereka sendiri secara langsung.
sumber
Forking membuat repositori yang sama sekali baru dari repositori yang ada (cukup melakukan git clone di gitHub / bitbucket)
Strategi cabang membuat cabang baru di repositori yang ada / berfungsi
Lebih spesifik: - Dalam proyek open source, pemilik repositori yang memutuskan siapa yang bisa mendorong ke repositori. Namun, gagasan open source adalah bahwa setiap orang dapat berkontribusi pada proyek.
Masalah ini diselesaikan dengan garpu: setiap kali pengembang ingin mengubah sesuatu dalam proyek open source, mereka tidak mengkloning repositori resmi secara langsung. Sebagai gantinya, mereka garpu untuk membuat salinan. Ketika pekerjaan selesai, mereka membuat permintaan tarik sehingga pemilik repositori dapat meninjau perubahan dan memutuskan apakah akan menggabungkannya ke proyeknya.
Pada intinya forking mirip dengan percabangan fitur, tetapi alih-alih membuat cabang, garpu repositori dibuat, dan alih-alih melakukan permintaan penggabungan, Anda membuat permintaan tarik.
Tautan di bawah ini memberikan perbedaan dengan cara yang dijelaskan dengan baik:
https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/
https://buddy.works/blog/5-types-of-git-workflows
http://www.continuousagile.com/unblock/branching.html
sumber