Perbedaan antara git pull --rebase dan git pull --ff-only


108

Katakanlah origin/mastertelah berkomitmen A--B--Cdan saya local/mastertelah berkomitmen A--B--D.

Apa yang akan terjadi jika saya menggunakan git pull --rebase?

Apa yang akan terjadi jika saya menggunakan git pull --ff-only?

Apakah ada perbedaan dalam pohon komit yang dihasilkan?

Jawaban:


132

Apa yang akan terjadi jika saya menggunakan git pull --rebase?

git pull --rebase kira-kira setara dengan

git fetch
git rebase origin/master

yaitu perubahan jarak jauh Anda (C ) akan diterapkan sebelum perubahan lokal ( D), menghasilkan pohon berikut

A -- B -- C -- D

Apa yang akan terjadi jika saya menggunakan git pull --ff-only?

Itu akan gagal.

git pull --ff-only sesuai dengan

git fetch
git merge --ff-only origin/master

--ff-onlymenerapkan perubahan jarak jauh hanya jika dapat dipercepat. Dari pria itu:

Menolak untuk menggabungkan dan keluar dengan status bukan nol kecuali HEAD saat ini sudah diperbarui atau penggabungan dapat diselesaikan sebagai percepatan

Karena cabang lokal dan jarak jauh Anda telah menyimpang, mereka tidak dapat diselesaikan dengan maju cepat dan git pull --ff-onlyakan gagal.


Apa yang akan terjadi jika tidak ada komitmen Ddalam perubahan lokal? Apakah kedua perintah itu setara?
Nico

7
Ya, keduanya akan menghasilkan A--B--C.
Gabriele Petronella

apa yang akan git pull --rebase --ff-onlydilakukan? (dengan asumsi ada C & D)
Refael Ackermann

2
IIRC opsi --ff-only diabaikan begitu saja saat dipasangkan dengan --rebase
Gabriele Petronella

5
@BreakingBenjamin berguna jika Anda ingin menjamin sejarah linier. Secara default pulldapat memperkenalkan komit gabungan, sedangkan Anda mungkin lebih suka bekerja dengan rebase dan ff saja.
Gabriele Petronella
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.