天天看點

使用git開發或多人開發,建立,删除,合并與解決沖突

在實際開發中,我們應該按照幾個基本原則進行分支管理:

首先,master分支應該是非常穩定的,也就是僅用來釋出新版本,平時不能在上面幹活;

那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本釋出時,再把dev分支合并到master上,在master分支釋出1.0版本;

你和你的小夥伴們每個人都在dev分支上幹活,每個人都有自己的分支,時不時地往dev分支上合并就可以了。

是以,團隊合作的分支看起來就像這樣:

使用git開發或多人開發,建立,删除,合并與解決沖突

1.檢視分支

// 下面帶星号的為目前本地分支
 git branch
* dev
  master

// 檢視遠端分支
git branch -a
* dev
  master

輸入q退出檢視
           

2.建立分支,切換分之,并把目前分支推送到遠端倉庫

// name分支名字
建立分支: git branch name

切換分支: git checkout name   或者 git switch <name>

建立+切換分支: git checkout -b name 或者 git switch -c name

把目前分之推送到遠端倉庫:
git push -u origin name

把目前新建立的分支推送到遠端倉庫并做關聯
git push origin originrName:name

若遠端已有分支,建立本地分支和遠端分支做關聯
git checkout -b 本地分支名 origin/遠端分支名
           

3.合并分支(推薦使用第二種,以目前情況而定)

把dev分支合并到目前分支上:  git merge dev

通常,合并分支時,如果可能,Git會用Fast forward模式,但這種模式下,删除分支後,會丢掉分支資訊。
合并分支時,加上--no-ff參數就可以用普通模式合并,合并後的曆史有分支,能看出來曾經做過合并
而fast forward合并就看不出來曾經做過合并。
git merge --no-ff dev
           

4.合并解決沖突(一般隻有多人共同開發一個項目才會出現這種情況)

當使用合并指令後出現下面幾行錯誤說明合并發生了沖突(readme.txt表示沖突的檔案,這裡隻是舉例)

Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

解決沖突就是把Git合并失敗的檔案手動編輯為我們希望的内容,再送出。
這個指令告訴我們沖突的檔案: git status

是以,多人協作的工作模式通常是這樣:

首先,可以試圖用 git push origin name 推送自己的修改;

如果推送失敗,則因為遠端分支比你的本地更新,需要先用 git pull 試圖合并;

git無法pull倉庫refusing to merge unrelated histories
合并pull兩個不同的項目:git pull origin master --allow-unrelated-histories
如果合并有沖突,則解決沖突,并在本地送出;

沒有沖突或者解決掉沖突後,再用 git push origin name 推送就能成功!

如果 git pull 提示 no tracking information,則說明本地分支和遠端分支的連結關系沒有建立
用指令 git branch --set-upstream-to name origin/name

           

5.删除本地分支,與删除遠端倉庫分支

删除本地的bug_xzx分支
git branch -d name

删除遠端的bug_xzx分支
git push origin --delete name
git push origin :name  //也可以直接推送一個空分支上去

           

本文參考廖雪峰的git教程而寫,用于筆記