Pertanyaan lain mengatakan git pull
seperti git fetch
+ git merge
.
Tapi apa perbedaan antara git pull
VS git fetch
+ git rebase
?
git
git-rebase
git-pull
git-fetch
michael
sumber
sumber
Jawaban:
Seharusnya cukup jelas dari pertanyaan Anda bahwa Anda sebenarnya hanya bertanya tentang perbedaan antara
git merge
dangit rebase
.Jadi anggaplah Anda berada dalam kasus umum - Anda telah melakukan beberapa pekerjaan pada cabang master Anda, dan Anda menarik dari asal, yang juga telah melakukan beberapa pekerjaan. Setelah pengambilan, semuanya terlihat seperti ini:
Jika Anda bergabung pada titik ini (perilaku default git pull), dengan asumsi tidak ada konflik, Anda berakhir dengan ini:
Jika di sisi lain Anda melakukan rebase yang sesuai, Anda akan berakhir dengan ini:
Konten pohon kerja Anda harus berakhir sama dalam kedua kasus; Anda baru saja membuat riwayat berbeda sebelum itu . Rebase menulis ulang sejarah Anda, membuatnya seolah-olah Anda telah melakukan di atas cabang master baru asal (
R
), alih-alih di tempat Anda awalnya berkomitmen (H
). Anda seharusnya tidak pernah menggunakan pendekatan rebase jika orang lain sudah menarik dari cabang master Anda.Akhirnya, perhatikan bahwa Anda benar-benar dapat mengatur
git pull
cabang yang diberikan untuk menggunakan rebase alih-alih menggabungkan dengan mengatur parameter configbranch.<name>.rebase
menjadi true. Anda juga dapat melakukan ini untuk satu tarikan menggunakangit pull --rebase
.sumber
TLDR:
git pull
seperti berlarigit fetch
lalugit merge
git pull --rebase
sepertigit fetch
saat itugit rebase
Sebagai balasan untuk pernyataan pertama Anda,
git pull
sepertigit fetch
+git merge
.(Ref: https://git-scm.com/docs/git-pull )
Untuk pernyataan / pertanyaan kedua Anda:
'Tapi apa perbedaan antara
git pull
VSgit fetch
+git rebase
'Sekali lagi, dari sumber yang sama:
git pull --rebase
Sekarang, jika Anda ingin bertanya
'perbedaan antara
merge
danrebase
'yang dijawab di sini juga:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(perbedaan antara mengubah cara riwayat versi dicatat)
sumber
git fetch + git rebase
kerja perintah dari sekarang. Tidak ada lagi konflik di pohon git kami mulai sekarang :)