Saya mulai menggunakan git di masa lalu dan tidak sepenuhnya memahami seluk-beluknya. Pertanyaan dasar saya di sini adalah untuk mengetahui perbedaan antara a git pull
dan git pull --rebase
, karena menambahkan --rebase
opsi tampaknya tidak melakukan sesuatu yang sangat berbeda: hanya melakukan tarikan.
Tolong bantu saya dengan memahami perbedaannya.
Jawaban:
git pull
=git fetch
+git merge
terhadap pelacakan cabang hulugit pull --rebase
=git fetch
+git rebase
terhadap pelacakan cabang huluJika Anda ingin tahu bagaimana
git merge
dangit rebase
berbeda, baca ini .sumber
git pull --rebase
itu sama dengangit fetch
dangit rebase
pada dasarnya seperti itu, tetapi tidak persis sama secara semantik. Ada beberapa perbedaan, beberapa di antaranya dijelaskan di sini. gitolite.com/git-pull--rebasefetch
?Jawaban diambil dari (dan sedikit dimodifikasi):
http://gitolite.com/git-pull--rebase
sumber
a---b+c---d+e---f---p'---q'---r' (foo)
sejak rebase mengubah hash.A
, dan saya mengirim PR ke repo hulu yang diterima. Kemudian ketika saya melakukangit pull --rebase
terhadap repo hulu, saya tidak mendapatkanA'
komit baru di atas repo hulu yang ditarik. Bahkan tidakA'
ada sama sekali. Apakah ini karenaA
digabungkan ke dalam sistem? Atau apakah itu karena tidak ada perbedaan antara versi hulu dan versi saya yang diubah?git pull --rebase
. Tetapi satu hal yang membingungkan saya dalam situasi hipotetis ini adalah bahwa pengelola hulu telah mengubah sejarah proyek yang telah ditarik ke dalam repositori pengembang lokal. Bukankah ini hanya praktik buruk pada umumnya? Jika ia ingin memecah komit / penulisan ulang sejarah, itu harus dilakukan sebelum mengintegrasikannya ke dalam repositori pusat untuk menghindari jenis konflik ini.Misalkan Anda memiliki dua komitmen di cabang lokal:
Setelah "git pull", akan:
Setelah "git pull --rebase", tidak akan ada titik gabungan G. Perhatikan bahwa D dan E menjadi komit yang berbeda:
sumber
git rebase
? Tapi kita bicarakangit pull --rebase
. Dan mereka adalah hal yang berbeda.Dalam kasus yang paling sederhana tanpa tabrakan
Lihat juga:
man git-pull
Lihat juga:
Kapan saya harus menggunakan git pull --rebase?
http://git-scm.com/book/en/Git-Branching-Rebasing
sumber
git sdd modified-file; git rebase --continue
atau gabung: digit add modified-file; git commit;
manamodified-file
file lokal Anda diubah secara manual / mergetoolfetch
? Mengapa mereka menciptakan duarebase
aliran? 1)git rebase
dan 2)git pull --rebase
?Untuk ini penting untuk memahami perbedaan antara Gabung dan Rebase.
Untuk detail, lihat - http://www.derekgourlay.com/archives/428
sumber