web-dev-qa-db-ja.com

Hgの1つのブランチのみにプッシュする方法は?

Hgリポジトリには3つのブランチがありますが、そのうち2つは非アクティブです(既にデフォルトのブランチにマージされているため)。 hg branchesは、各ブランチに1つずつ、3つのヘッドを表示しますが、hg branchesは、これらのブランチのうち2つを「非アクティブ」として表示します。

デフォルトのブランチを(hg Push --branch default http:// ...を使用して)別のリポジトリにプッシュしようとすると、「abort:Pushは新しいリモートブランチを作成します」というメッセージでマージが中止されます:! "

Hg Pushのマニュアルページから、「デフォルトでは、複数のヘッドを使用すると使用するヘッドが不明確になるため、プッシュでは宛先に新しいヘッドを作成できません。この状況では、プッシュする前にプルしてマージすることをお勧めします。」

私はすでにそれをしましたが、私はまだそれを中止することなく-デフォルトをプッシュすることはできません。

どんな助けも大歓迎です。ありがとう!

53
simon

defaultのチェンジセットが他のブランチに先祖のチェンジセットを持っている場合、それらのチェンジセットもプッシュする必要があります。すべてのチェンジセットも存在しないと、チェンジセットがレポに存在することはできません。

だから試してください:

hg Push --branch default --new-branch

「はい、このプッシュはリモートリポジトリが以前に見たことがないブランチ名を送信することを知っています」(Mercurial 1.6以降のIIRCも必要です)>

また、次のようにして、非アクティブなヘッドを取得し、クローズドヘッドにすることができます。

hg update thebranch
hg commit --close-branch -m 'closing'

「名前付きブランチは永遠」であるため、多くの人々は「安定」や「実験的」などの長寿命コンセプトのためにそれらを予約し、機能、リリース、その他の一時的なものにブックマーク、匿名ブランチ、またはクローンを使用します。これらの他のオプションの guide については、こちらをご覧ください。

58
Ry4an Brase

単一のブランチをプッシュするには、単に-bを使用します

hg Push -b myBranch

特定の問題に関しては、ブランチを閉じることを検討してください。 SourceTreeがそれを提供していることは知っていますが、具体的にはわかりません

33

あなたはそれを強制することができます!

方法は次のとおりです。

1. Pull from your repository
2. hg Push --rev nnn -f (replace nnn with your Rev # of your working branch)
3. do NOT force before PULLing. if you do things will get out sync and you are screwed

RhodeCodeのようなものを使用している場合は、強制してからチェックアウトすると、最新のブランチがあることがわかります。

ただし、後でMercurialが他のブランチをもう一度プッシュするように要求すると思います。たとえ閉じても、Mercurialはそのブランチをサーバー上に作成しようとします。

私もGitユーザーであり、顧客がMercurialを使用しているため同じ状況に陥りましたが、Gitワークフロースタイルを使用したいと思います。

私はそれが実行可能であると思うが、私はまだ100%を理解していない。

1
Gilson