2016-05-20 4 views
1

昨夜、私はマージを開始しました。それを忘れてしまった。作業コピーの変更を失うことなくHgマージを中止するにはどうすればよいですか?

後で作業コピーを少し変更しました。

今日、私はもはやマージしたくないです(私は新しいリビジョンをマージします)が、私はローカルの作業の変更を保ちたいと思います。変更は、マージの解決とは無関係です。

現在のマージを中止しているときに、ローカルの変更をどのように保持(および/または後で再適用)できますか?ローカルの変更にshelveを使用して


は許可されませんでした。

$ hg shelve foo/bar 
abort: cannot shelve while merging 

hg up -Cを使用して、「マージを中止」に通常の方法で、ローカルの変更を排除するであろう。


マージが既にだけコミットしていない、開始されているので、これはHow to 'hg merge' without affecting the working directory?のようではありません。 という質問は「コミットなしで中止」に焦点を当てていますが、コミットを最初に完了してから変更を取り出すことを含む回答が適切です。それが誤ってしないように私たちは、秘密を使用している

hg resolve -m -a      # mark all files as resolved 
hg commit -s -m "Savepoint."   # Temporary commit. 
hg update .^       # Back to original revision. 
             # (Use ".^" in cmd.exe on Windows.) 
hg revert -r tip --all     # Revert files to saved commit. 
hg diff        # Verify that you've got all the changes. 
hg strip -r tip --keep     # And discard the temporary commit. 

がここにコミット:

+0

パッチとして保存したい変更をエクスポートできますか?私はおそらく少し労働集約的だろう。 – Nanhydrin

+0

@ナンヒドリン私はそのような場合に回復することの退屈を「最小限に抑えながら」実行できるプロセスに熱心です。私はマージの途中ではないと思ってHgを騙す魔法を見つけましたが、それは魔法のように保つべきものです: – user2864740

答えて

3

最も簡単な解決策は、例えば、秘密に一時的に変更を記録コミットしてからコミットそれに戻すために、おそらくですあなたがそれを剥がすことを忘れた場合(またはあなたがそれを後にしておくことを計画している場合)プッシュされます。

evolve拡張機能を使用している場合は、hg strip -r tip --keepよりもhg prune -r tipが優先されます。後で参照する必要がある場合に備えて一時的なコミットが(隠されたまま)保持されます。

関連する問題