Mercurial:在进行局部变更和推动之前没有拉动。创造了8个以上的头脑

时间:2010-11-16 11:52:03

标签: mercurial push pull

我在读书时读到了所有建议的问题,但我最终感到困惑:我做了一些改变并承诺推动它们。但后来我才知道存储库被推到了,然后才推到它。所以我的问题是:

Q1。我的推送是否覆盖了存储库,即存储库是否不再具有在我之前推送的更改?

Q2。在这种情况下我该怎么办?我需要进行所做的更改,其他更改也是如此,不必让另一个人拉我的代码,重新提交,重新推送,然后我再次拉动,只是为了获得相同的工作副本。

Q3。无论如何,在我提交/推送之前可以隐式更新/拉取代码吗?

<击> Q4。什么是rebase选项?我在文档中读到了它,但我对代码所做的更改不是私有的。

假设:

  1. 没有创建任何分支。 (嗯,它们是创建的,但它们是不同的模块,我并不关心它们。)
  2. 我使用Eclipse和MercurialEclipse。
  3. 编辑:对不起,如果问题是(可能的)现有问题的副本。

4 个答案:

答案 0 :(得分:4)

您无法通过推送来销毁远程更改。您可以使用-f创建多个头,但只能通过推送来创建销毁历史记录。

要好好了解存储库的状态以查看发生了什么,请使用hg serve并在浏览器中查看它(可能是http://localhost:8000/graph)。然后你可以直观地看到头部和合并的状态。

答案 1 :(得分:1)

据我了解Mercurial,默认情况下,当推动会产生新的遥控头时,无法推动。
换句话说:如果其他人在您面前推了,而您没有进入并且合并那些更改。
但是,使用

可以更改此行为
push -f

您使用过该选项吗?

先生。 Spolsky在his tutorial中解释得更好。

答案 2 :(得分:1)

当我设法用hg创建一个medusa-repo时,我确定哪个分支将成为“主线”。然后我去每个子分支并执行这个过程:

hg up -r subbranch
hg merge -r mainline-branch
hg commit -m "merged from main"
hg up -r mainline-branch
hg merge -r subranch
hg commit -m "brought in the subchanges from subbranch"

首先合并到子支柱,我确保主线不会被损坏,然后我可以简单地合并到主线。

这不是一场重大危机;这只需要与其他开发人员合作,以便你们在第二天左右再次开始使用同一个分支。

答案 3 :(得分:0)

  

Q3。无论如何,代码可以隐式更新/拉取   在我提交/推送之前?

在.hg / hgrc中,添加

[hooks]
pre-commit = hg pull -u