2016-09-27 2 views
1

単純な質問の途中でローカルコミットを折る方法: のは、私は次のようなローカルコミットをして言ってみましょう:水銀:スタック

master -> a -> b -> c 

私はaとbをマージしたいです。これのためのhgコマンドは何ですか? abort: cannot fold chain not ending with a head or with branching

私はこれは私がCを継続することはできません

master -> a.preamend -> b -> c 
        \-> a 

のようなスタックを作成し

hg up b 
hg amend 

みました:私は

hg up b 
hg fold -r a 

が言ってエラーを得てみました。最後に試しました

hg up b 
hg histedit a 
abort: can only histedit a changeset together with all its descendants 

いいえ運がありません。事前のおかげで

hg up b 
hg *merge* -r a 

戻り

master -> b -> c 

:私が欲しいのようなものです!

答えて

0

2つのコミットの変更を1つのコミットに縮小したい場合は、hg rebaseコマンドを使用して変更をスクラッシュできます。

$ hg rebase -r a::b -d master --collapse

を参照してください。これは、両方のAの変化を潰すだろうし、bは1にしてコミット詳細は

をコミット:このエラーメッセージはというエラーメッセージについてRebaseExtension

+0

これを実行する前に、bまたはaに更新/チェックアウトする必要がありますか? – Ender

+0

これを実行する前にマスターブランチを更新しチェックアウトする必要があります。aとbはチェックアウトしないとコミットする必要がありません。 –

+1

これはエラーを返します: '中止:再構築されていない子孫を持つ元のチェンジセットを取り除くことができません.'' --keepは元のチェンジセットを保持します) ' – Ender

3

abort: cannot fold chain not ending with a head or with branchingは、新しい不安定な変更がリポジトリで許可されていない場合に発生します。

不安定な変更は、子供が時代遅れになっていない時代遅れの変更です。 experimental.evolutionhg configで探し、"unstable"を追加する必要があります。折りたたみチェンジ

について

foldを使用して、スタックの途中でコミットを折るには二つの方法があります。

  1. --exactオプションを使用します:あなたはhg fold -r a -r b --exactを行うことができます。これでは、あなたの作業ディレクトリの親が何であるかは関係ありません。折りたたまれるリビジョンについて言及する必要があります。

  2. この場合は、bhg update -r bを使用して最後の子に更新します。次にhg fold -r aを実行します。 foldに渡されたリビジョンは、折りたたみたいチェーンの最初のリビジョンでなければなりません。

あなたがabを折ら

master -> a -> b -> c

を持っていた、彼らはbが時代遅れではない子cを有しているので、それが不安定チェンジで、時代遅れになりました。

あなたのしていることは間違っていないので、あなたの設定に従って許可されていません。

関連する問題