你只需要合併,如果你已經在你的倉庫致力於爲好。如果你和你的朋友共享知識庫,那麼當你沒有做任何事情時,他會犯一次或多次,當他完成所有你需要做的事情時,就是拉和更新,而不是合併。
如果你做了本地提交,這裏的情況如何展開:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4
他承諾:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4---5---6
您承諾:
local: 1---2---3---4---X---Y
central: 1---2---3---4
friend: 1---2---3---4---5---6
他推:
local: 1---2---3---4---X---Y
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
你拉:
local: 1---2---3---4---X---Y
\
+-5---6
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
您合併:
local: 1---2---3---4---X---Y---7
\ /
+-5---6-+
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
然後你推和他拉,所有的倉庫都是相同的。
但是,如果當他對項目的工作,你什麼也沒做,下面的情況如何展開:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4
他承諾:
local: 1---2---3---4
central: 1---2---3---4
friend: 1---2---3---4---5---6
他推:
local: 1---2---3---4
central: 1---2---3---4---5---6
friend: 1---2---3---4---5---6
您拉動並更新:
其原因,這是從Subversion是如何做到的是與顛覆你有集中式存儲庫,每個人都不得不談不同。因此,當你開始提交你的本地修改時,Subversion客戶端會說「對不起,你需要更新才能提交」,並且你必須執行那個更新。
如果在那時您更改了在中央存儲庫中也發生更改的文件,Subversion會將您的本地更改與服務器更改合併,並將您的修訂點更新爲提示。如果沒有衝突,這將是一個無聲的合併,否則你會得到合併衝突。
Mercurial完全一樣,除了合併不是沉默的。您既可以在自己的本地存儲庫中單獨提交,也不需要彼此交談,但是當您嘗試將所有更改集成到一個公共存儲庫時,則需要合併。 Mercurial從不改變現有的變更集(除非你使用一些擴展名進行歷史編輯),所以它不能自動找出你的並行變更集如何協同工作。
如果你們兩個都沒有處理過相同的文件,或者你們對相同文件所做的更改沒有相互衝突,那麼只需點擊幾下鼠標就可以完成合並。
在任何情況下,Mercurial都有很多選擇,但分佈式部分確實改變了您需要考慮歷史的方式。
你能更具體地說「完全失敗嗎?」他只改變了文件失敗,還是其他文件?你有任何分支?你以什麼順序專門使用了哪些命令?你們是否都在同一個操作系統上?你得到了什麼具體的錯誤信息? – 2011-02-24 05:46:38
執行'hg pull'後執行'hg update'嗎?使用'hg pull'時,任何可用的變更集都會被拉入您的本地存儲庫。然後您必須執行「hg update」將變更集引入您的工作項目中。 – 2011-02-24 06:54:47
或更好,如果你想在一個命令中使用「hg pull -u」來進行SVN等效更新。 – Serkan 2011-02-24 07:21:50