Di Git saya bisa melakukan ini:
1. Mulai bekerja pada fitur baru:
$ git co -b newfeature-123 # (cabang pengembangan fitur lokal)
lakukan beberapa komit (M, N, O)
master A --- B --- C
\
newfeature-123 M --- N --- O
2. Tarik perubahan baru dari master hulu:
$ git pull
(master diperbarui dengan ff-commit)
master A --- B --- C --- D --- E --- F
\
newfeature-123 M --- N --- O
3. Rebase off master sehingga fitur baru saya
dapat dikembangkan melawan perubahan hulu terbaru:
(dari newfeature-123)
$ git rebase master
master A --- B --- C --- D --- E --- F
\
newfeature-123 M --- N --- O
Saya ingin tahu bagaimana melakukan hal yang sama di Mercurial, dan saya telah menjelajahi web untuk mendapatkan jawaban, tetapi yang terbaik yang bisa saya temukan adalah: git rebase - dapat hg melakukan itu
Tautan itu memberikan 2 contoh:
1. Saya akui ini: (mengganti revisi dari contoh dengan yang dari contoh saya sendiri)
hg up -CF cabang hg -f fitur baru-123 hg transplantasi -a -b newfeature-123
tidak terlalu buruk, kecuali bahwa ia meninggalkan MNO pra-rebase sebagai kepala yang tidak bermutasi dan menciptakan 3 komit baru M ', N', O 'yang mewakili mereka bercabang dari arus utama yang diperbarui.
Pada dasarnya masalahnya adalah saya berakhir dengan ini:
master A --- B --- C --- D --- E --- F
\ \
newfeature-123 \ M '--- N' --- O '
\
newfeature-123 M --- N --- O
ini tidak baik karena meninggalkan komitmen lokal yang tidak diinginkan yang harus dijatuhkan.
- Opsi lain dari tautan yang sama adalah
hg qimport -r M: O hg qpop -a hg up F cabang hg newfeature-123 hg qpush -a hg qdel -r qbase: qtip
dan ini menghasilkan grafik yang diinginkan:
master A --- B --- C --- D --- E --- F
\
newfeature-123 M --- N --- O
tetapi perintah ini (semuanya 6)! Tampaknya jauh lebih rumit daripada
$ git rebase master
Saya ingin tahu apakah ini satu-satunya yang setara dalam Hg atau jika ada cara lain yang tersedia yang sederhana seperti Git.


git reflogdan mereka tidak benar-benar pergi sampai mereka mendapatkan sampah. Jika Anda ingin menyimpannya di cabang bernama sehingga Anda tidak harus menggunakan reflog, lakukan sajagit branch feature-123_originalsebelum rebasing.