2010-05-10 49 views
1

我有兩臺機器,A和B都訪問外部hg存儲庫。這是我應該「hg push -f」的情況嗎?

我在A上做了一些開發,沒有準備好將更改集推送到外部,並且需要切換機器,所以我使用hg serve將更改集推送到B.變更集繼續B,承諾,然後推到外部回購。

我再拉到A和更新,默認/提示。這留下了以前作爲分支推送到B的局部變更集,但由於我如何推送事物,本地變更集中的變更已經處於默認/提示中。

我現在繼續進行更改,並在本地提交,但是當我試圖把汞問我合併或做push -f代替。我知道push -f幾乎從未被推薦過。 這種情況是接近一個,我應該用底墊中,但是這將是「重建基礎」變更集我並不真的需要在本地或外部存儲庫,因爲他們有效地已經在默認/提示通過推B.

現在,我知道我可以用最新的本地變更合併,只是放棄更改,但我仍然要提交哪些讓我回重訂領土合併。

這是我能做到hg push -f的情況下?

此外,爲什麼會在我繼續提交更改集之前從A創建遠程主管,如果更新爲默認/提示?

回答

2

我想備份我的A &乙庫,然後試試這個:

rem Machine A 
rem --------- 
hg merge 
hg commit -m"merge" 
hg push 

rem Machine B 
rem --------- 
hg pull 

合併應確保您有每個變更的一個實例從尖端可見,再加上沒有文件的其他合併變更變化。推動承諾合併應該是安全的 - 儘管在做之前我會檢查一下。

一個水銀的特點是,它是善於合併,所以你可以嘗試利用這一優勢。如果你是擔心合併的效果,你可以嘗試:

hg merge --preview 

得到的是什麼一回事做一個更好的主意。

如果您真的想要一個非分支歷史記錄,那麼您可以創建一個外部存儲庫的乾淨克隆[如果它不是太大],並將修改從A應用爲補丁。

相關問題