Pertanyaan lain mengatakan git pull
seperti git fetch
+ git merge
.
Tapi apa perbedaan antara git pull
VS git fetch
+ git rebase
?
Pertanyaan lain mengatakan git pull
seperti git fetch
+ git merge
.
Tapi apa perbedaan antara git pull
VS git fetch
+ git rebase
?
Jawaban:
Seharusnya cukup jelas dari pertanyaan Anda bahwa Anda sebenarnya hanya bertanya tentang perbedaan antara git merge
dan git 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:
- o - o - o - H - A - B - C (master)
\
P - Q - R (origin/master)
Jika Anda bergabung pada titik ini (perilaku default git pull), dengan asumsi tidak ada konflik, Anda berakhir dengan ini:
- o - o - o - H - A - B - C - X (master)
\ /
P - Q - R --- (origin/master)
Jika di sisi lain Anda melakukan rebase yang sesuai, Anda akan berakhir dengan ini:
- o - o - o - H - P - Q - R - A' - B' - C' (master)
|
(origin/master)
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 config branch.<name>.rebase
menjadi true. Anda juga dapat melakukan ini untuk satu tarikan menggunakan git pull --rebase
.
git pull
seperti berlari git fetch
lalu git merge
git pull --rebase
seperti git fetch
saat itugit rebase
git pull
seperti git fetch
+ git merge
.
"Dalam mode standarnya, tarikan git adalah singkatan untuk
git fetch
diikuti olehgit merge
FETCH_HEAD" Lebih tepatnya,git pull
berjalangit fetch
dengan parameter yang diberikan dan kemudian panggilangit merge
untuk menggabungkan kepala cabang yang diambil ke cabang saat ini "
(Ref: https://git-scm.com/docs/git-pull )
'Tapi apa perbedaan antara git pull
VS git fetch
+ git rebase
'
Sekali lagi, dari sumber yang sama:
git pull --rebase
"Dengan --rebase, ia menjalankan git rebase bukannya git merge."
'perbedaan antara merge
dan rebase
'
yang dijawab di sini juga:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(perbedaan antara mengubah cara riwayat versi dicatat)
git fetch + git rebase
kerja perintah dari sekarang. Tidak ada lagi konflik di pohon git kami mulai sekarang :)