Aku noob di Git, dan mencoba untuk mempelajari perbedaan antara git pullvs git rebase. Dapatkah seseorang memberikan contoh kapan harus menggunakan opsi mana karena saya merasa keduanya memiliki tujuan yang sama.
Ya saya lakukan. Perbedaan antara pull dan rebase adalah tarikan melakukan penggabungan. Jadi jawaban atas pertanyaan Anda ada di tautan yang saya tempel.
Thibault D.
1
@ user4943236 1) Anda bahkan tidak tahu siapa yang memberikan suara negatif pada pertanyaan Anda, jangan seenaknya menuduh orang lain tanpa alasan 2) jika itu adalah suara negatif saya, saya tidak akan menghapusnya hanya karena ini sangat mudah untuk menemukan jawaban dengan membaca dokumentasi
git pulldan git rebasetidak dapat dipertukarkan, tetapi mereka terhubung erat.
git pullmengambil perubahan terbaru dari cabang saat ini dari jarak jauh dan menerapkan perubahan tersebut ke salinan lokal cabang Anda. Umumnya hal ini dilakukan dengan menggabungkan, yaitu perubahan lokal digabungkan ke dalam perubahan jarak jauh. Begitu git pullpula dengan git fetch & git merge.
Rebasing adalah alternatif penggabungan. Alih-alih membuat komit baru yang menggabungkan dua cabang, itu memindahkan komit dari salah satu cabang di atas yang lain.
Anda dapat menarik menggunakan rebase daripada merge ( git pull --rebase). Perubahan lokal yang Anda buat akan didasarkan pada perubahan jarak jauh, bukan digabungkan dengan perubahan jarak jauh.
Anda tidak perlu checkout master. Tetap di cabang Anda dan lakukan: git fetchlalu git rebase origin/master.
Antoine Martin
1
Dengan memeriksa master lokal dan kemudian menarik master asal akan memperbarui master lokal Anda juga. Ini adalah salah satu praktik terbaik yang harus digunakan
Ashwani
21
Singkatnya:
-> Git Merge: Ini hanya akan menggabungkan perubahan Anda dan jarak jauh, dan itu akan membuat catatan riwayat komit lainnya
-> Git Rebase: Ini akan menempatkan perubahan Anda di atas semua perubahan jarak jauh baru, dan menulis ulang riwayat komit, sehingga riwayat komit Anda akan jauh lebih bersih daripada git merge. Rebase adalah operasi yang merusak. Artinya, jika Anda tidak menerapkannya dengan benar, Anda bisa kehilangan komitmen pekerjaan dan / atau merusak konsistensi repositori pengembang lain.
Jawaban:
git pull
dangit rebase
tidak dapat dipertukarkan, tetapi mereka terhubung erat.git pull
mengambil perubahan terbaru dari cabang saat ini dari jarak jauh dan menerapkan perubahan tersebut ke salinan lokal cabang Anda. Umumnya hal ini dilakukan dengan menggabungkan, yaitu perubahan lokal digabungkan ke dalam perubahan jarak jauh. Begitugit pull
pula dengangit fetch & git merge
.Rebasing adalah alternatif penggabungan. Alih-alih membuat komit baru yang menggabungkan dua cabang, itu memindahkan komit dari salah satu cabang di atas yang lain.
Anda dapat menarik menggunakan rebase daripada merge (
git pull --rebase
). Perubahan lokal yang Anda buat akan didasarkan pada perubahan jarak jauh, bukan digabungkan dengan perubahan jarak jauh.Atlassian memiliki beberapa dokumentasi yang sangat baik tentang penggabungan vs. rebasing .
sumber
Pada dasarnya Anda menarik cabang jarak jauh ke lokal Anda, contoh:
Akan menarik cabang master ke repositori lokal Anda
Yang satu ini menempatkan perubahan lokal Anda di atas perubahan yang dilakukan dari jarak jauh oleh pengguna lain. Sebagai contoh:
SOME-FEATURE
Sekarang Anda ingin melihat perubahannya dan perubahan Anda di cabang lokal Anda. Jadi Anda checkout
master
cabang:lalu Anda dapat menarik:
dan kemudian Anda pergi ke cabang Anda:
dan Anda dapat melakukan rebase
master
untuk mendapatkan perubahan terbaru darinya dan menempatkan komitmen cabang Anda di atas:Saya harap sekarang sedikit lebih jelas bagi Anda.
sumber
git fetch
lalugit rebase origin/master
.Singkatnya:
-> Git Merge: Ini hanya akan menggabungkan perubahan Anda dan jarak jauh, dan itu akan membuat catatan riwayat komit lainnya
-> Git Rebase: Ini akan menempatkan perubahan Anda di atas semua perubahan jarak jauh baru, dan menulis ulang riwayat komit, sehingga riwayat komit Anda akan jauh lebih bersih daripada git merge. Rebase adalah operasi yang merusak. Artinya, jika Anda tidak menerapkannya dengan benar, Anda bisa kehilangan komitmen pekerjaan dan / atau merusak konsistensi repositori pengembang lain.
sumber