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.
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.
Jawaban:
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.
Atlassian memiliki beberapa dokumentasi yang sangat baik tentang penggabungan vs. rebasing .
git-pull - Ambil dari dan integrasikan dengan repositori lain atau cabang lokal GIT PULL
Pada dasarnya Anda menarik cabang jarak jauh ke lokal Anda, contoh:
git pull origin master
Akan menarik cabang master ke repositori lokal Anda
git-rebase - Forward-port local commit ke upstream head GIT REBASE
Yang satu ini menempatkan perubahan lokal Anda di atas perubahan yang dilakukan dari jarak jauh oleh pengguna lain. Sebagai contoh:
SOME-FEATURESekarang Anda ingin melihat perubahannya dan perubahan Anda di cabang lokal Anda. Jadi Anda checkout mastercabang:
git checkout master
lalu Anda dapat menarik:
git pull origin master
dan kemudian Anda pergi ke cabang Anda:
git checkout SOME-FEATURE
dan Anda dapat melakukan rebase masteruntuk mendapatkan perubahan terbaru darinya dan menempatkan komitmen cabang Anda di atas:
git rebase master
Saya harap sekarang sedikit lebih jelas bagi Anda.
git fetchlalu git 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.