web-dev-qa-db-ja.com

この変更を「メイン」のMercurialリポジトリにプッシュできないのはなぜですか?

Mercurialを理解しようとしていますが、ここで混乱することを願っています!

私は自分のマシンに両方ともクローン( 'clone')したリポジトリ( 'main')を持っています。両方とも完全に同期していた。

名前付きブランチで遊ぶことにしたので、次に「クローン」でコミットしたとき、「case1212」というブランチ名でそれを行いました。それは私のクローンでコミットを適切に処理しているようですが、これらの変更をプッシュバックできません「メイン」に。指定されたエラーは次のとおりです。

abort: Push creates new remote branch 'case1212'!

...そしてそれは私が最初にマージする必要があるかもしれないことを示唆していますか?その「クローン」リポジトリで何をマージする必要がありますか? 「メイン」からプルしようとすると、変更はありません。

私が実際に自分の「メイン」リポジトリにリモートブランチを作成して、そこから更新する人がそのブランチを見ることができるようにしたいと確信しています。

49
Neil Trodden

Mercurialのデフォルトの動作では、リモートブランチを作成できません。これを行うには、強制的にプッシュする必要があります。

表示されたウィンドウの同期メニューには、強制プッシュのオプションがあります。

50
Nate Heinrich

Tortoiseには、Push new branchよりも安全なオプションForce pull or Pushが追加されました。コマンドラインツールにはフラグ--new-branchがあります。

更新:新しい亀のインターフェースでは、見つけるのが少し難しくなっています。 [同期]ビューに切り替えて、オプションをクリックし、[新しいブランチのプッシュを許可]を選択します。

24
Casebash

プッシュが新しいリモートヘッド(この場合はブランチ)を作成することを警告しています。あなたがそれで大丈夫で、あなたがそうであるように思えるなら、Push -f

このチェックはそこにあるので、case1212ブランチがメインサーバーに戻らないようにする場合は、hg Push -r defaultの場合、この警告は表示されず、case1212も送信されません。

Case1212に対してこれを実行すると、case1212がすでに存在するため、再び警告が表示されることはありません。

Mercurialの新しいバージョンでは、新しいヘッドが新しいブランチである場合に警告が少し怖く聞こえなくなります。

19
Ry4an Brase