У Git я можу це зробити:
1. Почніть працювати над новою функцією: $ git co -b newfeature-123 # (галузь розвитку місцевих функцій) зробіть кілька комітів (M, N, O) майстер A --- B --- C \ новахарактеристика-123 M --- N --- O 2. Витягніть нові зміни з головного потоку: $ git тягнути (master оновлено ff-commits) майстер A --- B --- C --- D --- E --- F \ новахарактеристика-123 M --- N --- O 3. Перезавантажте майстер, щоб отримати мою нову функцію може бути розроблено на основі останніх змін вище за течією: (з нової особливості-123) $ git master rebase майстер A --- B --- C --- D --- E --- F \ новахарактеристика-123 M --- N --- O
Я хочу знати, як зробити те ж саме в Mercurial, і я шукав відповідь в Інтернеті, але найкраще, що я міг знайти, це: git rebase - може Hg зробити це
Це посилання містить 2 приклади:
1. Я визнаю, що це: (замінюючи редакції з прикладу на ті, що є з мого власного прикладу)
hg вгору -CF hg гілка -f newfeature-123 hg трансплантація -a -b новахарактеристика-123
Не надто погано, за винятком того, що він залишає позаду попередньої рестарації MNO у вигляді нерозподіленої головки та створює 3 нові коміти M ', N', O ', які представляють їх, відгалужуючи оновлений магістраль.
В основному проблема полягає в тому, що я закінчую це:
майстер A --- B --- C --- D --- E --- F \ \ новафункція-123 \ M '--- N' --- O " \ новахарактеристика-123 M --- N --- O
це не добре, оскільки воно залишає після себе місцеві, небажані вчинки, які слід відмовитися.
- Інший варіант із того ж посилання є
hg qimport -r M: O hg qpop -a hg вгору F hg гілка newfeature-123 hg qpush -a hg qdel -r qbase: qtip
і це призводить до отримання потрібного графіка:
майстер A --- B --- C --- D --- E --- F \ новахарактеристика-123 M --- N --- O
але ці команди (всі 6!) здаються набагато складнішими, ніж
$ git master rebase
Я хочу знати, чи це єдиний еквівалент Hg, чи є інший доступний спосіб, такий як Git.
git reflog
і вони повністю не зникли, поки не збирають сміття. Якщо ви хочете зберегти їх у названій гілці, щоб вам не довелося використовувати рефлог, просто зробіть їхgit branch feature-123_original
перед повторним виданням .