Saya memiliki master
cabang dan develop
cabang untuk mengerjakan beberapa perubahan. Saya perlu menggabungkan perubahan dari master
menjadi develop
, tetapi pada akhirnya akan menggabungkan semuanya dari develop
menjadi master
. Saya memiliki dua alur kerja yang berbeda dalam pikiran:
git pull origin master
menjadidevelop
cabanggit merge master
menjadidevelop
cabang
Mana cara terbaik untuk melakukan ini, dan mengapa?
git pull
=git fetch
+git merge FETCH_HEAD
Jawaban:
Hati-hati dengan rebase. Jika Anda berbagi cabang pengembangan dengan siapa pun, rebase dapat mengacaukan banyak hal. Rebase hanya baik untuk cabang lokal Anda sendiri.
Aturan praktis, jika Anda telah mendorong cabang ke asal, jangan gunakan rebase. Sebagai gantinya, gunakan gabungan.
sumber
git push origin rebasedBranch --force
repo pribadi? Satu-satunya pengguna adalah saya sendiri.Alur kerja ini paling cocok untuk saya:
... buat beberapa perubahan ...
... pemberitahuan master telah diperbarui ...
... komit perubahan untuk mengembangkan ...
... bawa perubahan itu kembali ke pengembangan ...
... buat beberapa perubahan lagi ...
... berkomitmen untuk mengembangkan ...
... menggabungkan mereka menjadi tuan ...
sumber
git pull
tepat sebelum finalgit merge develop
. Apa tujuan dari itu?git pull --rebase origin master
pada cabang pengembangan Anda sedikit lebih cepat.Pendekatan terbaik untuk hal semacam ini mungkin
git rebase
. Ini memungkinkan Anda untuk menarik perubahan dari master ke cabang pengembangan Anda, tetapi meninggalkan semua pekerjaan pengembangan Anda "di atas" (nanti di log komit) barang-barang dari master. Ketika pekerjaan baru Anda selesai, penggabungan kembali ke master sangat mudah.sumber
develop
tidak dibagikan kepada orang lain.develop
dibagikan dengan kontributor lain, bagaimana kami memperbaruidevelop
ketika beberapa hotfix didorong langsung kemaster
? Haruskah kita melakukan penggabungan, yaitugit checkout master && git pull --rebase && git checkout develop && git merge master
? Saya meninggalkan komentar pada jawaban tertinggi di atas, yang juga merinci kekhawatiran ini.Jika Anda tidak berbagi pengembangan cabang dengan siapa pun, maka saya hanya akan rebase setiap kali master diperbarui, dengan cara itu Anda tidak akan memiliki gabungan melakukan seluruh sejarah Anda begitu Anda akan bergabung mengembangkan kembali menjadi master. Alur kerja dalam hal ini adalah sebagai berikut:
Langkah-langkah di atas akan memastikan bahwa cabang pengembangan Anda akan selalu di atas perubahan terbaru dari cabang utama. Setelah selesai dengan mengembangkan cabang dan diubah kembali ke perubahan terbaru pada master, Anda bisa menggabungkannya kembali:
sumber
Aturan praktis saya adalah:
contoh untuk nama yang sama adalah
master
,origin/master
danotherRemote/master
.jika
develop
hanya ada di repositori lokal, dan selalu didasarkan padaorigin/master
komit baru-baru ini , Anda harus memanggilnyamaster
, dan bekerja di sana secara langsung. itu menyederhanakan hidup Anda, dan menyajikan hal-hal sebagaimana adanya: Anda langsung berkembang dimaster
cabang.jika
develop
dibagikan, itu tidak boleh di rebootingmaster
, hanya digabung kembali dengannya--no-ff
. Anda sedang mengembangkandevelop
.master
dandevelop
memiliki nama yang berbeda, karena kami ingin mereka menjadi hal yang berbeda, dan tetap terpisah. jangan membuat mereka sama denganrebase
.sumber