Gitではこれを行うことができます:
1.新しい機能の作業を開始します。 $ git co -b newfeature-123#(ローカル機能開発ブランチ) いくつかのコミットを行う(M、N、O) マスターA --- B --- C \ newfeature-123 M --- N --- O 2.アップストリームマスターから新しい変更をプルします。 $ git pull (ff-commitsで更新されたマスター) マスターA --- B --- C --- D --- E --- F \ newfeature-123 M --- N --- O 3.マスターをリベースして、私の新機能を 最新の上流の変更に対して開発することができます: (newfeature-123から) $ git rebase master マスターA --- B --- C --- D --- E --- F \ newfeature-123 M --- N --- O
Mercurialで同じことをする方法を知りたいのですが、Webを調べて答えを探しましたが、私が見つけた最善の方法はgit rebaseです。
そのリンクは2つの例を提供します:
1.私はこれを認めます:(例のリビジョンを自分の例のリビジョンで置き換えます)
hg up -CF hgブランチ-f newfeature-123 hg移植-a -b newfeature-123
リベース前のMNOをマージされていないヘッドとして残し、更新されたメインラインから分岐することを表す3つの新しいコミットM '、N'、O 'を作成することを除いて、それほど悪くはありません。
基本的に問題は私がこれで終わることです:
マスターA --- B --- C --- D --- E --- F \ \ newfeature-123 \ M '--- N' --- O ' \ newfeature-123 M --- N --- O
削除する必要があるローカルの不要なコミットが残るため、これは適切ではありません。
- 同じリンクからの他のオプションは
hg qimport -r M:O hg qpop -a hg up F hgブランチnewfeature-123 hg qpush -a hg qdel -r qbase:qtip
そしてこれは望ましいグラフになります:
マスターA --- B --- C --- D --- E --- F \ newfeature-123 M --- N --- O
しかし、これらのコマンド(6つすべて!)は、
$ git rebase master
これがHgで唯一の同等のものか、Gitのような単純な他の方法が利用できるかどうかを知りたいです。
git reflog
それらがガベージコレクションを取得するまで、それらは完全に消えていません。reflogを使用する必要がないように、それらを名前付きブランチに保持したい場合は、リベースのgit branch feature-123_original
前に行ってください。