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前に行ってください。