Saya memiliki cabang lokal dari sebuah proyek ("configUpdate") yang telah saya cabut dari proyek orang lain dan saya telah melakukan banyak perubahan di dalamnya dan ingin menggabungkan perubahan yang telah mereka buat ke cabang lokal saya.
Saya sudah mencoba
git pull --rebase origin configUpdate
tetapi belum meraih perubahan terbaru - bagaimana saya bisa menggabungkan keduanya? (juga untuk poin bonus apa yang saya lakukan dengan pull --rebase
perintah?)
Jawaban:
Dari cabang fitur Anda (mis.
configUpdate
Jalankan):Atau bentuk yang lebih pendek:
Mengapa ini bekerja:
git merge branchname
mengambil komit baru dari cabangbranchname
, dan menambahkannya ke cabang saat ini. Jika perlu, itu secara otomatis menambahkan komit "Gabung" di atas.git rebase branchname
mengambil komitmen baru dari cabangbranchname
, dan memasukkannya "di bawah" perubahan Anda. Lebih tepatnya, itu memodifikasi sejarah cabang saat ini sehingga didasarkan pada ujungbranchname
, dengan setiap perubahan yang Anda buat di atas itu.git pull
pada dasarnya sama dengangit fetch; git merge origin/master
.git pull --rebase
pada dasarnya sama dengangit fetch; git rebase origin/master
.Jadi mengapa Anda ingin menggunakannya
git pull --rebase
daripadagit pull
? Berikut ini contoh sederhana:Anda mulai bekerja pada fitur baru.
Pada saat Anda siap untuk mendorong perubahan Anda, beberapa komitmen telah didorong oleh pengembang lain.
Jika kamu
git pull
(yang menggunakan penggabungan), perubahan Anda akan dikubur oleh komit baru, selain komit gabungan yang dibuat secara otomatis.Jika Anda
git pull --rebase
sebaliknya, git akan memajukan master Anda ke hulu, lalu menerapkan perubahan Anda di atas.sumber
Saya menemukan itu:
sumber
pull --rebase
tidak berhasil karenaorigin
menunjuk ke garpu Anda. Ini akan berhasil jika Anda melakukannyagit pull --rebase upstream/master
.Beralih ke cabang lokal Anda
Gabungkan master jarak jauh ke cabang Anda
Jika Anda memiliki konflik, perbaiki mereka dan untuk setiap file yang bertentangan lakukan perintah
Lanjutkan rebase
sumber
git rebase sepertinya tidak berhasil untukku. Setelah git rebase, ketika saya mencoba untuk mendorong perubahan ke cabang lokal saya, saya terus mendapatkan kesalahan ("petunjuk: Pembaruan ditolak karena ujung cabang Anda saat ini berada di belakang mitra jarak jauhnya. Integrasikan perubahan jarak jauh (mis. 'Git pull. .. ') sebelum mendorong lagi. ") bahkan setelah git menarik. Yang akhirnya berhasil bagi saya adalah git merge.
Jika Anda seorang pemula seperti saya, berikut adalah artikel bagus tentang git merge vs git rebase. https://www.atlassian.com/git/tutorials/merging-vs-rebasing
sumber