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 reflog
dan 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_original
sebelum rebasing.