0

hg Mercurial リポジトリの使用を開始したばかりで、複数の HEAD がある状況で立ち往生しています。私は過去に自分のコードをリポジトリにもプッシュしましたが、現在のコードにもありません。他の誰かが自分のコードをプッシュするたびに、私のデフォルトのヘッドカウントが増加するように思えますが、他のマシンではそのような動作は見られません。どうすればこれらの頭を取り除き、プッシュを失わないようにすることができますか?

注: 私は eclipse mercurial プラグインで MAC OSX を使用しています。

4

2 に答える 2

3

私が今あなたの問題を理解している限り、あなたはリポジトリにプッシュしており、同じリポジトリを使用している他の人がいます。正しい?

私にとっては、最新のコミットに取り組んでいないように見えるため、現在のブランチに複数のヘッドが作成されています。さらに注意: Mercurial では、ヘッドとブランチの間にいくつかの違いがあります。

次のようなことが起こると想像できます (1 つのブランチのみで作業していると仮定します)。

あなたの作業コピー:

1-2-3-4-5-6 (where number is revision)

r6たとえば、2 つのコミット7'8'.
作業コピーは次のようになります。

1-2-3-4-5-6-7'-8'

しかし、その間、プッシュ/プルする共有リポジトリは次のようになります。

1-2-3-4-5-6-7-8-9-10 (so r10 is the 'latest' commit published)

ここで、共有リポジトリにプッシュすると、次のようになります。

            7'-8'
           /
1-2-3-4-5-6-7-8-9-10

そしてほら、今では と と呼ばれる 2 つの異なるヘッドが8'あり10ます。

将来的には、最初に共有リポジトリからプルし、最新のコミットで更新することで、この問題を回避できます。

さて、あなたの質問は複数の頭を解決する方法だったので、さまざまなオプションがあります。最も簡単なのは単純なマージです。

hg help merge

ヘッドがローカルにのみある場合 (ヘッド/コミットのフェーズを見てください) に応じて、rebasesなどのより多くの (おそらくよりエレガントな) オプションがあります。

一般に、これは Mercurial を始めたり深く理解したりするのに適したリソースです。

于 2013-01-22T05:27:02.250 に答える
2

いくつかの優れた一般的な情報が提供されていますが、MercurialEclipse固有の情報をいくつか提供します。

  • Mercurialを理解するための鍵は、履歴グラフです。(ナビゲータービューで右クリックし、[チーム]-> [履歴の表示]を選択します)。グラフである左の列に注意してください。コミットした後のグラフと、コミットする前のグラフを比較します。また、引っ張る前のグラフと引っ張った後のグラフを比較してください。
  • Mercurialでチェンジセットをコミットすることは、それが他の人に見えることを意味するわけではありません。プッシュされたチェンジセットのみが他の人に表示されます
  • 一般に、この状況を修正するには、すべてのヘッドをマージして([チーム]-> [マージ])、新しい単一のヘッドをプッシュする必要があります。
  • 単一の頭に戻ったら、ワークフローは
    • 同期する前に変更をコミットします
    • プロジェクトを右クリック->チーム->同期
    • 同期ビューで、着信ノードを右クリックし、[プルして更新]を選択します。これにより、受信した変更とマージするように求められます
    • 変更をプッシュする準備ができたら(ヘッドが1つで、着信には何もないはずです)、同期ビューで発信ノードを右クリックしてプッシュできます。チェンジセットをプッシュすると、すべての祖先がプッシュされます。
于 2013-01-24T18:12:51.813 に答える