1

我在摆姿势时阅读了所有建议的问题,但最终我感到困惑:SI 做了一些更改并提交并推送了它们。但后来我才知道,在我推送到它之前,存储库被推送到了。所以我的问题是:

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

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

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

Q4。什么是变基选项?我在文档上阅读了它,但我对代码执行的更改不是私有的。

假设:

  1. 没有创建任何分支。(好吧,它们是创建的,但它们是不同的模块,我不关心它们)。
  2. 我使用 Eclipse 和 MercurialEclipse。

编辑:对不起,如果问题是现有问题的(可能)重复。

4

4 回答 4

4

您不能通过推送来破坏远程更改。您可以使用 来创建多个头-f,但不能仅通过推送来创建销毁历史。

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

于 2010-11-16T12:56:08.443 回答
1

据我了解 Mercurial,默认情况下,当推送会创建新的远程头时,无法推送。
换句话说:如果其他人在您之前推动,而您没有拉入并合并这些更改。
这种行为可以改变,但是使用

push -f

你用过那个选项吗?

Spolsky 先生在他的教程中解释得更好。

于 2010-11-16T12:43:32.010 回答
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"

通过先合并到子分支,我确保主线不会损坏,然后我可以轻松地合并到主线。

This is not a major crisis; this just requires working with the other developers so you all start hitting the same branch again in the next day or so.

于 2010-11-16T17:25:42.743 回答
0

Q3. Is there anyway that the code can be updated/pulled implicitly before I commit/push?

In the .hg/hgrc, add

[hooks]
pre-commit = hg pull -u
于 2017-10-25T03:26:46.243 回答