git-rebase
sebutan halaman manual -X<option>
dapat diteruskan ke git-merge
. Kapan / bagaimana tepatnya?
Saya ingin rebase dengan menerapkan tambalan dengan strategi rekursif dan opsi mereka (menerapkan tongkat apa pun, daripada melewatkan seluruh komitmen yang saling bertentangan). Saya tidak ingin bergabung, saya ingin membuat sejarah linier.
Saya sudah mencoba:
git rebase -Xtheirs
dan
git rebase -s 'recursive -Xtheirs'
tetapi git menolak -X
dalam kedua kasus.
git rebase -Xtheirs
berfungsi dalam versi terbaru, kecuali konflik pohon perlu diselesaikan secara manual. Anda perlu menjalankan git rebase -Xtheirs --continue
(dengan -X
diulang) setelah menyelesaikan konflik tersebut.
git
git-rebase
Kornel
sumber
sumber
git rebase --interactive
. Lihat [jawaban saya yang diperbarui di bawah ini ( stackoverflow.com/a/2945367/6309 ).Jawaban:
Anda dapat menggunakan ini dengan Git v1.7.3 atau versi yang lebih baru.
(yang merupakan kependekan dari yang
git rebase --strategy recursive --strategy-option theirs ${branch}
dinyatakan oleh dokumentasi )Dari Git v1.7.3 Catatan Rilis:
git rebase --strategy <s>
belajar--strategy-option
/-X
pilihan untuk lulus opsi tambahan yang dipahami oleh strategi penggabungan dipilih.NB: "Milik kita" dan "milik mereka" berarti kebalikan dari apa yang mereka lakukan selama penggabungan lurus. Dengan kata lain, "milik mereka" mendukung komitmen pada cabang saat ini .
sumber
ours
dantheirs
tampaknya menjadi kebalikan dari apa yang saya harapkan. Saya perlu menggunakantheirs
untuk mendukung cabang saya saat ini.-X
menyiratkan-s recursive
, sehingga Anda sekarang dapat menggunakan hanyagit rebase ${branch} -X theirs
. (sumber git-scm.com/docs/git-rebase#git-rebase--Xltstrategy-optiongt )Ini untuk menggabungkan strategi yang datang dengan set opsi mereka sendiri
harus berfungsi, meskipun tambalan ini menyebutkan (Februari 2010):
Jadi jika itu masih tidak berhasil, ini sedang diperdebatkan sekarang!(didukung di git terbaru)
Pembaruan dari commit db2b3b820e2b28da268cc88adff076b396392dfe (Juli 2013, git 1.8.4+),
Itu berarti
-X
dan strategi sekarang bekerja dengan rebase interaktif, serta rebase sederhana.sumber
Seperti yang dikatakan iCrazy , fitur ini hanya tersedia untuk git 1.7.3 dan seterusnya. Jadi, untuk jiwa-jiwa miskin (seperti saya) masih menggunakan 1.7.1, saya menyajikan solusi yang saya lakukan sendiri:
git-rebase-milik mereka
Ini adalah skrip yang dipoles dengan sangat baik (dan panjang), dimaksudkan untuk penggunaan produksi: opsi ui, menangani beberapa file, memeriksa apakah file benar-benar memiliki penanda konflik, dll, tetapi "inti" dapat diringkas dalam 2 baris:
Dan inilah skrip lengkapnya:
sumber
git rebase --strategy="recursive --theirs" master