私のアプリケーションで新機能用のMercurialブランチを作成していますが、特定の機能を完了した後、そのブランチをデフォルトのブランチにマージし、この機能ブランチを閉じます。Merge後のMercurialブランチの削除方法
しかし、デフォルトブランチにマージされた変更を失うことなく、それらの名前付きブランチを完全に削除する方法があるのだろうか?
私のアプリケーションで新機能用のMercurialブランチを作成していますが、特定の機能を完了した後、そのブランチをデフォルトのブランチにマージし、この機能ブランチを閉じます。Merge後のMercurialブランチの削除方法
しかし、デフォルトブランチにマージされた変更を失うことなく、それらの名前付きブランチを完全に削除する方法があるのだろうか?
いいえありません。
2つのブランチをマージした場合、マージコミットは2つの親コミットの存在によって異なります。つまり、マージコミットを削除しない限り、マージされたブランチを構成しているコミットを削除することはできません。
これは物事を行う "Mercurialな方法"でもありません。ブランチが別のブランチにマージされ、そのブランチでそれ以上の開発が行われなかった場合、Mercurialはそのブランチがもうアクティブではないことを認識します。 hg branches
は、リストの一番下に非アクティブブランチを配置します。また、hg commit --close-branch
を使用してブランチを閉じることもできます(-c
パラメータが指定されていない限り、hg branches
リストからブランチが削除されます)。
これは、Mercurialキュー(MQ)を調べる必要があるように思えます。これは、記述したものと同様のワークフローをサポートするためです。たとえば、複数のMQキューを設定できます。これらのキューはそれぞれ、開発の分岐点を表します。
クローン起源と支店別のディレクトリへのリポジトリ:
hg clone ssh://site//hg/repository repository-origin
hg clone /home/user/work/repository repository-branch
マージデフォルトと機能リポジトリブランチ内部支店:
cd repository-branch
hg merge feature-branch
hg commit -m "feature-branch: merging into default"
cd ..
マスターリポジトリの作成:
rsync -av --exclude=".*" repository-branch/ repository
:
hg clone repository-origin repository
は(隠されたものを除く)リポジトリブランチファイルとマスター内のすべてのファイルを上書きしますすべてのchanをマージするシングルとマスターから機能枝からGESコミット:リモート
へ
cd repository
hg commit -m "feature-branch: merging into default"
プッシュ最後の内部に不要な枝からのすべて/一部のコミットの情報を持っているのは良いかもしれませんコミットメッセージ。
あなたの答えは完璧に近いです必要な(と私はそれをupvotedしました)しかし、@lvicaはMQの前のブックマークを見るべきです。 MQは難しいです。それは本当のパワーツールであり、フェーズ(そしてまもなく廃止された)がここにある今、好意を失っています。一方、ブックマークは、永続的な名前のブランチが過度に機能する可能性がある、機能ごとの分割に最適です。 –
@ Ry4anはい、私はそれらを忘れました。ブックマークを使用して削除後のマージをどのように処理しますか? –
あなたは 'hg bookmark --delete bookmark_name'でブックマークを削除するだけです。たくさんの素晴らしい情報がここにあります:http://mercurial.selenic.com/wiki/Bookmarks/ –