0

我认为我“得到”了 Mecurial 的大部分内容,但困扰我的一件事是,当我拉取其他文件中其他人所做的更改时,我必须提供提交消息有什么意义?当这些用户将相应的变更集推送到“the”服务器时,他们已经有机会提供提交消息。

据我所知,没有办法只推送我进行更改的树的一部分,所以当其他人对树的不相关部分中的不相关文件进行更改时,我有一个需要推送的变更集,我必须“拉动”、“合并”,然后“提交”,在这里我提供一条描述他们的更改的消息,这些更改在理论上已经由他们的提交消息描述。

我可能不明白一些事情。有没有更好的方法来处理我的情况:

 ~$ ## 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

必须更好地了解合并的价值以及您对合并的操作

变更集的提交消息(通常)是“此变更集所做工作的简短描述”。对于合并集“完成”是“合并来自...的更改”并且来自此合并集的第二个父分支的提交消息将通知,确实(哪些更改)已合并

于 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

了解什么是合并很重要。您的提交正在合并两个不同的分支,而不是提交该用户的代码,因此更合适的提交消息将涉及“合并”一词。

现在我将向您展示一个更好的方法。

在这种情况下,如果您从未推送过您尝试推送的代码,那么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 回答