Pada saat git melakukan kepalaku, aku tidak bisa menemukan solusi terbaik untuk yang berikut.
Ada dua cabang, satu disebut master dan satu disebut dukungan mobilede . Saya ingin menjaga layanan ponsel sebagai cabang terus menerus yang akan digabungkan / disinkronkan dengan cabang master setiap kali layanan mobilede layanan tetap stabil. Ini akan menggabungkan perubahan dari mobiledevicesupport menjadi master tetapi juga membawa semua perubahan dari master ke mobiledevicesupport sehingga cabang dapat terus dikerjakan dan fitur ditingkatkan atau diubah. Ini perlu bekerja dengan repositori pusat dan beberapa pengembang.
Tolong contoh alur kerja serupa yang digunakan orang lain atau katakan saja jika ide ini bodoh dan saya harus mempertimbangkan opsi lain. Saat ini alur kerja tampaknya baik, tetapi saya tidak tahu bagaimana saya bisa membuat git bekerja seperti ini.
Terima kasih, semua bantuan sangat dihargai.
Pembaruan 1: Jika saya menggabungkan master ke dalam dukungan layanan mobilede dan dukungan layanan perangkat seluler menjadi master, apakah saya mendapatkan replikasi komitmen di kedua cabang. Atau apakah git cukup pintar untuk mengetahui bahwa saya telah menarik perubahan terbaru dari cabang A ke cabang B dan menambahkan gabungan komit C ke cabang B. Dan saya telah menarik perubahan terbaru dari cabang B ke cabang A dan menambahkan gabungan komit D ke cabang SEBUAH?
Saya akan memposting gambar tetapi saya tidak memiliki reputasi yang cukup untuk itu, jadi saya kira ilustrasi berikut harus dilakukan. Dua cabang terus-menerus berjalan dengan penggabungan yang menuju kedua arah sering. Hal utama yang saya tidak yakin tentang adalah bagaimana git akan memainkan komit dan akankah mengisi salah satu cabang dengan komit dari cabang lain pada penggabungan atau akan tetap bersih. Saya telah menggunakan rebase sebelumnya tetapi tampaknya mengakhiri cabang dan meletakkan semua komit ke dalam master, atau saya melakukan kesalahan. Terima kasih atas bantuannya sejauh ini.
master
A--B--C-----H--I--J--M--N
\ / \
mobile \ / \
D--E--F--G--------K--L
Jawaban:
ya lakukan saja
untuk menjaga agar layanan ponsel tetap sinkron dengan master
maka ketika Anda siap untuk menempatkan dukungan mobilede ke dalam master, pertama menggabungkan master seperti di atas, lalu ...
dan itu saja.
asumsinya di sini adalah bahwa mobilexxx adalah cabang topik dengan pekerjaan yang belum siap untuk masuk ke cabang utama Anda. Jadi hanya bergabung menjadi master ketika dukungan layanan mobil berada di tempat yang baik
sumber
Kapan pun Anda ingin mendapatkan perubahan dari master ke cabang kerja Anda, lakukan a
git rebase <remote>/master
. Jika ada konflik. mengatasinya.Ketika cabang kerja Anda siap, rebase lagi dan kemudian lakukan
git push <remote> HEAD:master
. Ini akan memperbarui cabang utama pada remote (repo pusat).sumber
git branch --contains <commit>
.Pendekatan concept47 adalah cara yang tepat untuk melakukannya, tetapi saya menyarankan untuk bergabung dengan opsi --no-ff untuk menjaga riwayat komit Anda tetap jelas.
sumber
Ya saya setuju dengan pendekatan Anda. Untuk menggabungkan dukungan ponsel ke master yang dapat Anda gunakan
Demikian pula Anda juga dapat menggabungkan master dalam dukungan layanan mobilede.
Q. Jika penggabungan silang adalah masalah atau tidak.
A. Yah, itu tergantung pada komit yang dibuat dalam mobile * branch dan master branch sejak terakhir kali mereka disinkronkan. Ambil contoh ini: Setelah sinkronisasi terakhir, komit berikut terjadi pada cabang-cabang ini
Sekarang, misalkan komit B membuat beberapa perubahan pada file a.txt dan komit D juga membuat beberapa perubahan pada a.txt. Mari kita lihat dampak dari setiap operasi penggabungan sekarang,
Sekarang, ada dua jenis penggabungan yang mungkin
Git pertama-tama akan mencoba untuk membuat penggabungan FF dan jika menemukan konflik tidak dapat diselesaikan oleh git. Gagal menggabungkan dan meminta Anda untuk bergabung. Dalam hal ini, sebuah komit baru akan muncul yang bertanggung jawab untuk menyelesaikan konflik di a.txt.
Jadi Intinya adalah penggabungan Cross bukan masalah dan akhirnya Anda harus melakukannya dan itulah yang artinya sinkronisasi. Pastikan Anda mengotori tangan Anda dalam menggabungkan cabang sebelum melakukan apa pun dalam produksi.
sumber
Jawaban yang diterima melalui git merge akan menyelesaikan pekerjaan tetapi meninggalkan komit berantakan, cara yang benar harus 'rebase' melalui langkah-langkah berikut (dengan asumsi Anda ingin menyimpan cabang fitur Anda di sycn dengan mengembangkan sebelum Anda melakukan dorongan terakhir sebelum PR ).
1
git fetch
dari cabang fitur Anda (pastikan cabang fitur yang sedang Anda perbarui diperbarui ke tanggal)2
git rebase origin/develop
3 jika timbul konflik, selesaikan satu per satu
4 gunakan
git rebase --continue
setelah semua konflik ditangani5
git push --force
sumber
Anda berpikir ke arah yang benar. Gabungkan master dengan dukungan layanan mobile secara terus menerus dan gabungkan dukungan layanan mobil dengan master ketika dukungan layanan mobil stabil. Setiap pengembang akan memiliki cabang sendiri dan dapat bergabung ke dan dari dukungan master atau mobil tergantung pada peran mereka.
sumber