1. 程式人生 > >git 更新和衝突解決簡單流程

git 更新和衝突解決簡單流程

   git 更新和衝突解決簡單流程如下:

   

   流程如下:
   1.0) 建立分支branch1並切換過去
        git checkout -b branch1
        git branch   #檢視是否順利切換過去
   1.1)在branch1下修改檔案後新增並遞交到快取區

        遞交前可使用git status檢視哪些檔案作了更新。
        以上命令打印出的提示資訊:
        # On branch branch1
        # Changes not staged for commit:
        #    (use "git add <file> ..." to update what will be committed)
        #    (use "git checkout -- <file>..." to discard changes in working directory)
        #    
        #    modified: demo_top.v
        以上提示資訊說明了:
        a)當前所在分支為branch1
        b) 提示demo_top.v 被修改了。可以使用git add命令提交修改。或使用"git checkout --
demo_top.v"命令放棄修改,即恢復回修改前的內容。

        確定修改後遞交更新:
        git add  檔名
        git commit 檔名 -m “註釋說明”
   1.2)切換回master
        git checkout master
        git branch
   1.3) 從git更新,其他團隊成員可能對同一個檔案的相同行作了更新,從而可能在以下1.4步產生衝突
        git pull  
        使用git pull的作用:
        - 獲取最新的資料
        - 發現衝突,並和其他團隊成員溝通可能存在哪些問題,經協商後解決衝突
   1.4) git merge branch1 或git merge --no-ff branch1
        提示資訊:
        Auto-merging design/rtl/demo_top.v
        CONFLICT (content): Merge conflict in design/rtl/demo_top.v
        檢視檔案demo_top.v, 發現標註了衝突行。

        建議使用git merge --no-ff branch1 #即保留分支痕跡,no-ff表示no fast forward,即在刪
除分支後,仍保留修改資訊。所謂的fast forward,即直接修改Master的HEAD指標,未修改整合master和branch1分支,故速度很快,但缺點是刪除branch1時無法保留branch1的修改資訊。

   1.5) 僅在master分支下改掉檔案中的衝突,並重新遞交到master分支的快取區。
        在master 分支,修改demo_top.v, 新增並遞交到快取區
        git add demo_top.v
        git commit demo_top.v -m "master conflict correction"
        提示資訊:
        fatal: cannot do a partial commit during a merge
        解決方法:
        git commit demo_top.v -i -m "master conflict correction"  #即獨立遞交demo_top.v
        或
        git commit -a -m "master conflict correction" 
        建議挨個確認衝突,獨立遞交每一個修改

        不需要在branch1下修改衝突並遞交。原因為:在master下已通過git merge合併了branch1下的修改,而且合併後,可刪除branch1。       
  1.6)push到遠端,保證其他團隊成員可獲得最新的修改。
       git push origin master   #若第一次push,使用git push -u origin master