我在读书时读到了所有建议的问题,但我最终感到困惑:我做了一些改变并承诺推动它们。但后来我才知道存储库被推到了,然后才推到它。所以我的问题是:
Q1。我的推送是否覆盖了存储库,即存储库是否不再具有在我之前推送的更改?
Q2。在这种情况下我该怎么办?我需要进行所做的更改,其他更改也是如此,不必让另一个人拉我的代码,重新提交,重新推送,然后我再次拉动,只是为了获得相同的工作副本。
Q3。无论如何,在我提交/推送之前可以隐式更新/拉取代码吗?
<击> Q4。什么是rebase选项?我在文档中读到了它,但我对代码所做的更改不是私有的。
假设:
编辑:对不起,如果问题是(可能的)现有问题的副本。
答案 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