發表文章

目前顯示的是 12月, 2011的文章

pull(拉收)/push(推送),mercurial 跟 git 的不同

pull / push ,是分散式版本控制系統的指令 對於mercurial 中,執行pull 操作,把對方的changesets 抓回來時,"預設"不自動進行merge.抓回來的changeset 中如果有新的分支,pull 後自己的儲存庫就會多出一個新分支,名字跟遠端的那個新分支一樣.若是changeset是某一個支線的變更,則mercurial 會在那個支線生出新的head.push 也是一樣的作法.這樣一來,你就必須自行檢驗一下抓回來的changeset 內容,然後自己merge,這樣的機制提供了一個檢驗跟反悔的機會.當然也得出比較多的工 而git 的pull ,預設是會自動merge的.push 也是一樣,預設會進行merge.所以你可以聽到看到很多git 的教學網站/前輩,都呼籲大家在git 環境裡,謹慎的使用pull/push 指令,因為一旦merge 時產生衝突,反而得花更多的工在解決衝突,建議是先用fetch 指令.git 的fetch 指令,會先把遠端的changeset 抓回來,抓回來的changeset 會開一個新分支暫放,你可以切換到新分支檢查與驗證抓下來的changeset,有信心後再將這個分支merge 到你本身.