Kami menggunakan git dan memiliki cabang master dan cabang pengembang. Saya perlu menambahkan fitur baru dan kemudian rebase komit ke master, lalu dorong master ke server CI.
Masalahnya adalah jika saya mengalami konflik saat rebase saya tidak bisa mendorong ke cabang pengembang jarak jauh saya (di Github) setelah rebase selesai, sampai saya menarik cabang jauh saya. Ini menyebabkan duplikat komit. Ketika tidak ada konflik, bekerja seperti yang diharapkan.
pertanyaan: setelah rebase dan resolusi konflik, bagaimana cara menyinkronkan cabang pengembang lokal dan jarak jauh saya tanpa membuat duplikat komit
Mempersiapkan:
// master branch is the main branch
git checkout master
git checkout -b myNewFeature
// I will work on this at work and at home
git push origin myNewFeature
// work work work on myNewFeature
// master branch has been updated and will conflict with myNewFeature
git pull --rebase origin master
// we have conflicts
// solve conflict
git rebase --continue
//repeat until rebase is complete
git push origin myNewFeature
//ERROR
error: failed to push some refs to 'git@github.com:ariklevy/dropLocker.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
// do what git says and pull
git pull origin myNewFeature
git push origin myNewFeature
// Now I have duplicate commits on the remote branch myNewFeature
EDIT
Jadi sepertinya ini akan memecah alur kerja:
developer1 bekerja pada myNewFeature developer2 yang bekerja pada hisNewFeature keduanya menggunakan master sebagai cabang utama
developer2 menggabungkan myNewFeature ke hisNewFeature
developer1 rebases, menyelesaikan konflik, lalu memaksa mendorong ke cabang jauh untuk myNewFeature
beberapa hari kemudian, developer2, menggabungkan myNewFeature ke dalamNewFeature lagi
Apakah ini akan menyebabkan pengembang lain membenci developer1?
force
push)
rewriting history
, itu adalahrebase
we
? Apakah Anda berada dalam tim yang lebih dari sekadar Anda?they
katakan (orang-orang yang tahu lebih banyak dari saya) bahwa jika Anda membagikan kode Anda, jangan menggunakanrebase
. Mengapa tidak Anda hanya melakukangit pull
dangit merge
?