2016-12-05 10 views
0

BitbucketでホストされているMercurialリポジトリをフォークしました。元のリポジトリに対する書き込み権限がありません。フォークにいくつかのコミットをしました。まずはすなわち、最新の、B、CおよびDそれらを呼ぶことにしましょう:Mercurialで特定のコミットに対してのみプルリクエストを行うにはどうすればよいですか?

  • D [最新]
  • C
  • B < ---これで行われた変更のみをプル
  • Aをコミット[最古]

今、私はこれを行う方法があり、A、CおよびDを無視して、排他的にBをコミット内のすべての変更のためにプルリクエストを作りたい

答えて

2

まず、グラフの表示方法を理解しましょう。分岐したレポの先端がxで、分岐がない線形履歴があるとします。だからあなたの歴史は次のようになります。

[1000's of commits] -> parent(parent(x)) -> parent(x) -> x 

今、あなたはAが最新のものであること最古1とDことで4つのコミットすなわちABCDを作りました。今、あなたは、グラフのようになります。歴史早いxより

x -> A -> B -> C -> D 

ノートは、その我々が議論している何のために情報の一部を必要としないので、その上で含まれていない、無傷のままです。

Bチェンジセットのみを含むプルリクエストを作成します。メインレポはBの親であるAも知らないので、現在の状態ではこれは不可能です。あなたは親が/そこにいない限り子供を持つことはできません。

したがって、Bチェンジセットのプルリクエストを作成する場合は、rebasexにする必要があります。

rebaseはMercurialのでは拡張機能である、あなたは我々が拡張有効にした後のは、リベースしてみましょうあなたの.hg/hgrc

[extensions] 
rebase = 

に次の行を追加することによって、それをオンにすることができます。

hg rebase -s B -d x 

これは、になります:Bの親がxあるので、今、あなたはプルリクエストを作成することができます

x -> A 
    \-> B -> C -> D 

。また、Cを再度Aにリベースすることで、よりきれいな履歴状態にすることもできます。 2つのブランチ、1つはプッシュしたいチェンジセット、他のローカルチェンジセットを含みます。再びリベースは、次のようになります。

hg rebase -s C -d A 

と歴史の結果の状態です:

x -> A -> C -> D 
    \-> B 

あなたは簡単にだけBチェンジを含むプル要求を作成することができます。

関連リンク:

Rebase Extension

関連する問題