Git では、次のことができます。
1. 新機能の作業を開始します。 $ git co -b newfeature-123 # (ローカル機能開発ブランチ) いくつかのコミットを行います (M、N、O) マスターA---B---C \ newfeature-123 M---N---O 2. アップストリーム マスターから新しい変更をプルします。 $ git プル (ff-commits で更新されたマスター) マスター A---B---C---D---E---F \ newfeature-123 M---N---O 3. マスターからリベースして、新しいフィーチャーを アップストリームの最新の変更に対して開発できます。 (newfeature-123 より) $ git リベース マスター マスター A---B---C---D---E---F \ newfeature-123 M---N---O
Mercurial で同じことを行う方法を知りたいのですが、答えを求めて Web を精査しましたが、見つけた最高のものは次のとおりでした: git rebase - can hg do that
そのリンクは2つの例を提供します:
1.これを認めます:(例のリビジョンを自分の例のリビジョンに置き換えます)
hg アップ -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 アップ 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 リベース マスター
これが Hg の唯一の同等物なのか、それとも Git のような単純な他の方法があるのか知りたいです。