0

私は Mecurial のほとんどを「理解」していると思いますが、1 つ気になるのは、他のファイルで他のユーザーが行った変更を取得するために pull を行う場合、コミット メッセージを提供しなければならないことにどのような意味があるのでしょうか? これらのユーザーは、対応する変更セットを「その」サーバーにプッシュしたときに、コミット メッセージを提供する機会がすでにありました。

私の知る限り、変更を加えたツリーの部分だけをプッシュする方法はありません。そのため、他の人がツリーの無関係な部分の無関係なファイルに変更を加え、プッシュする必要がある変更セットがある場合、「プル」、「マージ」、および「コミット」する必要があります。ここで、変更を説明するメッセージを提供します。変更は、理論的にはコミットメッセージによって説明されています。

私はおそらく何かを理解していません。私が次のような状況を処理するためのより良い方法はありますか?

 ~$ ## Make some changes
 ~$ hg ci -m 'blah'
 ~$ ## Attempt to "push" and get "abort: push creates new remote head"
 ~$ hg pull
 ~$ hg merge # <- totally unrelated files updated here
 ~$ hg ci -m "SOMEONE ELSE'S FILES CHANGED....!"
 ~$ hg push

??

4

3 に答える 3

2

マージの価値とマージに対するアクションをよりよく理解する必要があります

変更セットのコミット メッセージ (従来) は、「この変更セットによって行われる内容の簡単な説明」です。マージセットの「完了」は「...からの変更をマージする」であり、このマージセットの2番目の親のブランチからのコミットメッセージは、実際に(どの変更が)マージされたかを通知します

于 2012-12-28T14:59:38.240 に答える
1

マージは、プルした変更セットではなく、コメントしている変更です。あなたの例では:

~$ ## Make some changes
~$ hg ci -m 'blah'
~$ ## Attempt to "push" and get "abort: push creates new remote head"
~$ hg pull
~$ hg merge 
~$ hg ci -m "Merged with changes on the Flibble-floo server"
~$ hg push

他の開発者または別のブランチから直接プルしている可能性があることに注意してください。メッセージは、実行したマージを説明する必要があります。

~$ hg pull bob
~$ hg merge 
~$ hg ci -m "Merged with Bob's changes"
于 2012-12-29T11:02:28.587 に答える
0

マージとは何かを理解することが重要です。あなたのコミットは、そのユーザーのコードをコミットするのではなく、2 つの分岐ブランチをマージしているため、より適切なコミット メッセージには「マージ」という単語が含まれます。

ここで、さらに良い方法を紹介します。

この場合、プッシュしようとしているコードをプッシュしたことがないため、おそらくrebaseの方が適しています。あなたのケースは、 A common caseで、そのドキュメント内で正確にカバーされています。

~$ ## Make some changes
~$ hg ci -m 'blah'
~$ ## Attempt to "push" and get "abort: push creates new remote head"
~$ hg pull --rebase  # Or alternately, `hg pull; hg rebase`
~$ hg push

その後、最終的に線形の履歴になります。これは通常、(実行可能な場合) 操作しやすいものです。

前述のように、構成で最初に拡張機能を有効にする必要があることに注意してください。

[extensions]
rebase =
于 2012-12-29T11:36:42.113 に答える