Saya punya proyek kloning dari cabang master dari repositori jarak jauh remote_repo
. Saya membuat cabang baru dan saya berkomitmen untuk cabang itu. Pemrogram lain didorong ke remote_repo
cabang utama.
Sekarang saya perlu rebase RB cabang saya ke remote_repo
master.
Bagaimana cara melakukannya? Apa perintah untuk mengetik ke terminal?
git
clone
git-rebase
Damir
sumber
sumber
Jawaban:
Pertama ambil master baru dari repositori hulu, kemudian rebase cabang kerja Anda pada itu:
Pembaruan : Silakan lihat jawaban Paul Draper untuk cara yang lebih ringkas untuk melakukan hal yang sama - versi Git terbaru menyediakan cara yang lebih sederhana untuk melakukan yang setara dengan dua perintah di atas.
sumber
Your branch and 'origin/b1' have diverged, # and have 3 and 2 different commits each, respectively.
Sepertinyagit pull
dibutuhkan yang lain. Apakah ini benar atau saya kehilangan sesuatu di sini?git rebase master
tidak akan melakukan pekerjaan yang sama dengan perintah kedua (git rebase origin/master
) karenamaster
danorigin/master
mungkin menunjukkan komit yang berbeda (terutama mengingat bahwa perintah pertama adalahgit fetch origin
, yang dapat memodifikasiorigin/master
).sumber
git pull --rebase=interactive origin master
dev
dan jalankangit pull --rebase origin master
, hanya cabangdev
yang akan dimodifikasi, tidakmaster
. The--rebase
dokumentasi bendera menyatakan bahwa ia mencoba untukrebase the current branch on top of the upstream branch after fetching
dan apa-apa tentang memodifikasi cabang pelacakan lokal.Setelah melakukan perubahan pada cabang Anda, checkout
master
dan tarik untuk mendapatkan perubahan terbaru dari repo:Kemudian checkout cabang Anda dan rebase perubahan Anda pada
master
:... atau dua perintah terakhir dalam satu baris:
Saat mencoba mendorong kembali ke
origin/RB
, Anda mungkin akan mendapatkan kesalahan; jika Anda satu-satunya yang bekerjaRB
, Anda bisa memaksakan dorongan:... atau sebagai berikut jika Anda telah mengkonfigurasi git dengan tepat:
sumber
git push
tanpa-f
).Catatan: Jika Anda sudah memiliki pengetahuan luas tentang rebase maka gunakan di bawah satu liner untuk rebase cepat. Solusi: Dengan asumsi Anda berada di cabang kerja Anda dan Anda adalah satu-satunya orang yang mengerjakannya.
Selesaikan konflik apa pun, uji kode Anda, komit dan dorong perubahan baru ke cabang jarak jauh.
Langkah-langkah berikut dapat membantu siapa saja yang baru
git rebase
dan ingin melakukannya tanpa kerumitanLangkah 1: Dengan asumsi bahwa tidak ada komitmen dan perubahan yang harus dilakukan pada YourBranch pada saat ini. Kami mengunjungi YourBranch.
Apa yang terjadi? Tarik semua perubahan yang dibuat oleh pengembang lain yang bekerja di cabang Anda dan rebase perubahan Anda di atasnya.
Langkah 2: Selesaikan konflik yang muncul.
Langkah 3:
Apa yang terjadi? Tarik semua perubahan terbaru dari master jarak jauh dan rebase master lokal di master jarak jauh. Saya selalu menjaga master jarak jauh bersih dan melepaskan siap! Dan, lebih suka bekerja pada master atau cabang secara lokal. Saya sarankan dalam melakukan ini sampai Anda mendapatkan perubahan git atau melakukan. Catatan: Langkah ini tidak diperlukan jika Anda tidak mempertahankan master lokal, sebagai gantinya Anda dapat melakukan pengambilan dan rebase master remote secara langsung di cabang lokal secara langsung. Seperti yang saya sebutkan di langkah tunggal di awal.
Langkah 4: Selesaikan konflik yang muncul.
Langkah 5:
Apa yang terjadi? Rebase pada master terjadi
Langkah 6: Selesaikan konflik apa pun, jika ada konflik. Gunakan
git rebase --continue
untuk melanjutkan rebase setelah menambahkan konflik yang diselesaikan. Kapan saja Anda dapat menggunakangit rebase --abort
untuk membatalkan rebase.Langkah 7:
Apa yang terjadi? Mendorong perubahan pada YourBranch remote Anda.
--force-with-lease
akan memastikan apakah ada perubahan masuk lainnya untuk YourBranch dari pengembang lain saat Anda melakukan rebasing. Ini sangat berguna daripada memaksa. Seandainya ada perubahan yang masuk maka ambil mereka untuk memperbarui YourBranch lokal Anda sebelum mendorong perubahan.Mengapa saya harus mendorong perubahan? Untuk menulis ulang pesan commit di remote YourBranch setelah rebase yang tepat atau Jika ada konflik yang diselesaikan? Maka Anda perlu mendorong perubahan yang Anda selesaikan dalam repo lokal ke repo jarak jauh YourBranch
Yahoooo ...! Anda berhasil menyelesaikan rebasing.
Anda mungkin juga ingin melakukan:
Kapan dan Mengapa? Gabungkan cabang Anda menjadi master jika dilakukan dengan perubahan oleh Anda dan co-developer lainnya. Yang membuat YourBranch diperbarui dengan master ketika Anda ingin bekerja di cabang yang sama nanti.
sumber
Pulls latest changes from remote master to local master. I always prefer keeping remote master clean and release ready always!
. Saya akan memperbarui deskripsi saya.Langkah 1:
Langkah 2:
Langkah 3: (Perbaiki jika ada konflik)
Langkah 4:
Langkah 5:
sumber
1.Perbarui Master dulu ...
2. Sekarang rebase sumber-cabang dengan cabang master
JIKA cabang sumber belum ada pada remote maka lakukan:
"et voila ..."
sumber
git fetch origin master:master
menarik versi master terbaru tanpa perlu memeriksanya.Jadi yang Anda butuhkan adalah:
git fetch origin master:master && git rebase master
👌sumber
git fetch
memperbarui master tanpa perlu memeriksanya juga? Tapigit fetch
bukankahgit merge
pembaruan itu benar? Jadi, jika kami checkoutmaster
tidak akan memiliki pembaruan terbaru. Jadi bukankah lebih pendek untuk dilakukan saat di cabang fitur, kalaugit fetch
begitugit rebase origin/master
? Kita tidak bisa melakukan itugit rebase master
karena itu akan mencoba untuk rebase darimaster
di ruang kerja, kita harusorigin/master
dapatkan dari yang tidak bergerak tetapi duduk di lokal.