15
  1. initializedは上のMercurialプロジェクトMachine Acommitted私の変更、およびuploadedそれらのリモートリポジトリへの変更。

  2. 次にcloned、そのリポジトリを に追加しMachine Bcommittedいくつかの変更を加えて、uploadedそれらを同じリモート リポジトリに移動します。

どちらの場合も、同じコマンドで変更をアップロードしました。

hg push https://username:password@domain/user/repository/

マシン A に戻りpull、リモート リポジトリから編集し、次のコマンドを使用して GUI ツールを使用mergして 2 つの変更セット間の変更を編集しました。KDiff3

hg pull
hg merge
hg commit

ただし、このプル アンド マージの後でマシン A からリモート リポジトリに最新の変更をプッシュしようとすると、次のメッセージが表示されます。

hg push https://username:password@domain/user/repository/
pushing to https://username:password@domain/user/repository/
searching for changes
abort: push creates new remote heads!
(did you forget to merge? use push -f to force)

「マージを忘れましたか」と表示されるのはなぜですか? -- マージを完了しました。

プッシュを強制して「新しいリモートヘッド」を作成するのは悪いことですか?

もしそうなら、どうすればこれを回避できますか?


アップデート:

" hg merge" を再度実行したところ、次の出力が得られました。

5 files updated, 1 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon

' hg up --clean' を実行したところ、次のように報告されました。

6 files updated, 0 files merged, 1 files removed, 0 files unresolved

hg heads」と入力すると、次のように表示されます。

changeset:   11
tag:         tip
parent:      9
user:        eggdrop
date:        Tue Oct 20 16:27:44 2009 -0400
summary:     Machine A after merge

changeset:   10
parent:      7
user:        chickensoup
date:        Thu Oct 15 03:27:23 2009 -0400
summary:     Machine B changes to be pulled onto Machine A
4

2 に答える 2

9

あなたは走っhg up --cleanた。つまり、マージを元に戻したということは、まだマージする必要があるということです。マージすると未解決のファイルができます。エラー メッセージをもう一度お読みください。

5 files updated, 1 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon

マージの競合を解決してから、 でマージを完了する必要がありhg resolveます。これで、2 つの頭が正常にマージされます。

あなたの質問に答えると、いいえ、リモート ヘッドが 2 つあるのは悪くありません。他のものをリモートサーバーにプッシュする前に、それらを(できればできるだけ早く)マージする必要があることを意味します.

したがって、修正するには、 を実行しhg merge、1 つの競合を解決してから、 を実行しますhg resolve

于 2009-10-20T22:04:30.073 に答える
2

最初に:で変更を表示しますhg log。私の場合、次のことは役に立ちませんでした。

  • hg pullおよびhg merge(hg着信に対してチェックをプルする前に)
  • また:hg pull --rebase

しかし、これは役に立ちました。

hg merge [revision]

頭のように見えるいくつかのリビジョンを明示的にマージする必要があることがわかりました。

于 2010-07-21T19:02:23.780 に答える