Git分支建立與合併

2022-07-16 02:06:12 字數 3104 閱讀 7152

分支管理是git支援多人協作和版本控制的關鍵,參照廖雪峰對git的介紹,對真實開發環境中git的使用結合實踐進行梳理。

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

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

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

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

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

在看具體實踐前,需要了解一些理論概念,參考建立與合併分支:

(1)head指標與分支間的關係:

(2)分支合併的時候,預設採用fast forward模式,可稱為「快進合併」,即將master直接指向dev的當前提交,如下圖,但這種模式下,刪除分支後,會丟掉分支資訊:

(3)no-ff模式,在合併的時候採用該模式,會新建立乙個提交,並將master指向該最新提交。

(1)建立本地庫:執行命令 git init ,建立 .git隱藏檔案

(2)本地庫關聯遠端倉庫:用github對工程進行託管,具體可參照新增遠端庫,為本地庫新增遠端倉庫資訊

建立完成後,本地工程如下: 

假設有2名開發,bob和lilei。

(1)建立開發分支dev

git checkout -b dev,此時該分支還屬於私人分支。

git push origin dev:dev,遠端倉庫建立dev分支,並與本地關聯。

git checkout dev   切換分支(切之前,可以先執行 git pull  拉去分支資訊,使本地版本庫與遠端相同)。

(2)對index.html檔案進行修改,bob新增「add by bob」,提交到遠端倉庫,具體指令參照git常用命令

(3)lilei拉取最新**,並進行修改,在index.html中新增「add by lilei」

① git fetch origin dev    拉去dev分支最新**

③ 在index.html中新增「add by lilei」,提交並push到遠端倉庫

(4)bob拉取最新**,並將dev分支合併到master分支

① git pull origin dev   直接pull,代替fetch+merge操作,預設採用fast-forward模式合併。(此處應該採用(3)先fetch,再merge,分支結構更明顯)

② git checkout master   切到主分支

③  git merge --no-ff -m 'merge with no-ff' dev 或者 git merge dev,會對dev和master進行合併提交

④ git push origin  將合併後的主分支同步到遠端倉庫

(1)採用no-ff模式

執行命令: git log --graph --pretty=oneline --abbrev-commit  檢視分支圖形結構,如下:

① bob在dev的本地分支上修改檔案,並提交到遠端倉庫。

② lilei本地拉取最新檔案,並採用 no-ff方式進行合併(新建立乙個提交,從而是dev分支的head指標指向新提交)

③ lilei修改檔案,並提交到遠端倉庫。bob直接pull拉取,預設採用fast-forward模式。

④ bob將dev合併到master分支,執行命令git merge --no-ff -m 'merge with no-ff' dev

在github上檢視最後一次提交,其中本次提交有2個parent(4f368cc和5b53028),與上圖對應,如下:

(2)採用fast forward模式

① 第一種模式最後一次提交。

② bob將修改提交遠端倉庫。lilei從遠端倉庫直接pull拉取合併,採用fast forward方式,沒有產生新的提交。

③ lilei將修改提交遠端倉庫。bob拉取遠端倉庫後合併(fetch+merge),採用fast forward模式,沒產生新的提交。

④ 切換到master分支,執行git merge dev合併。

遇到衝突時,git已經做了合併,但是沒有自動地建立乙個新的合併提交。 git會暫停下來,等待你去解決合併產生的衝突,然後再對衝突的檔案執行提交(add、commit、push)即可,但分支樹上會記錄衝突。

具體做法參考:git 分支 - 分支的新建與合併

Git建立分支與合併分支

首先,我們建立dev分支,然後切換到dev分支 git checkout b dev 建立dev分支並同時切換到dev分支 switched to a new branch dev git checkout命令加上 b引數表示建立並切換,相當於以下兩條命令 git branch dev git ch...

git建立分支與合併分支

第一步 建立分支 git branch my branch 建立分支my branch 第二步 在自己的分支上進行操作,git status 檢視當前哪些檔案進行了修改,將本地修改的 推送到暫存區 git checkout my branch 切換到自己分支 git status 檢視當前修改了哪些...

Git 建立與合併分支

現在我們可以把dev分支上的內容合併到分支master上了,可以在master分支上,使用如下命令 git merge dev 如下所示 git merge命令用於合併指定分支到當前分支上,合併後,再檢視readme.txt內容,可以看到,和dev分支最新提交的是完全一樣的。注意到上面的fast f...