天天看點

由一次merge錯誤引發git 分支模型的思考

問題描述

    上周上線, 把分支合并到master後上線,結果出現了有bug,發現是代碼合并有問題,但是在合并過程中git對該檔案的處理并沒有提示給我任何的沖突資訊,合并代碼怎麼被覆寫的呢?經過一番思考,過程是這樣的,不合理的git 模型使用會出現一些問題。

分支A 和master      1 在master上進行了部分bug修改     2 在分支A上同時開發新功能。     3 合并分支的時候,先把master的内容合并到分支上(把master上修改的bug合并到A分支上,這樣可能會把A上最新修改的檔案覆寫掉)     4 再把分支的内容合并到master上。

    這樣操作,可能會把分支A中的最新的一部分代碼覆寫掉,master merge 到A, A再merge到master上, 這樣兩個分支的耦合性太大,是以會出現代碼覆寫問題。

問題的解決     1 如果不改變git branch modle的話, 我們注意最好不要把master 的合并到分支上,隻有分支合并到master上。     2 改變模型,在master不做bug的修改。master不做任何修改,master主幹是各個分支合并過來,在修改bug的時候,建立了一個hotfix分支,這樣再進行合并。 不同的分支 有不同的用途,和master分支解耦合,并且每個分支有自己相對應的父分支,一般是子分支合并到父分支上,父分支一般不合并到子分支。如下圖分支模型

由一次merge錯誤引發git 分支模型的思考

    ps : http://nvie.com/posts/a-successful-git-branching-model/ 綜上:     1 兩個分支不要互相耦合     2 有時候有檔案沖突是好事,沒有檔案沖突則可能會有更大的問題。     3 知之為知之,不知為不知,是知也。

繼續閱讀