Git分支管理:創建與合併分支

創建與合併分支

版本回退裏,每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。Git裏,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master纔是指向提交的,所以,HEAD指向的就是當前分支

在這裏插入圖片描述
每次提交,master分支都會向前移動一步,這樣,隨着你不斷提交,master分支的線也越來越長。

創建新的分支,例如dev時,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支dev上。
在這裏插入圖片描述
創建dev分支
命令 git branch dev
在這裏插入圖片描述
切換到dev分支
命令git checkout dev
在這裏插入圖片描述
創建dev分支並切換到dev分支。
命令 git checkout -b dev

!!注意:避免混淆
撤銷修改是git checkout -- <file>

查看當前分支
git branch命令會列出所有分支,當前分支前面會標一個*號。
命令git branch
在這裏插入圖片描述
新提交一次後,dev指針往前移動一步,而master指針不變

比如修改了hello.txt文件並提交

命令 vim hello.txt
在這裏插入圖片描述
命令 git add hello.txt
命令 git commit -m "branch test"
在這裏插入圖片描述

在這裏插入圖片描述
如我們在dev上的工作完成了,就可以把dev合併到master上。Git怎麼合併呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合併。

dev分支的工作完成,我們就可以切換回master分支

命令 git checkout master
在這裏插入圖片描述

查看hello.txt文件內容

命令 cat hello.txt
在這裏插入圖片描述
發現添加的內容並沒有。

把dev分支的工作成果合併到master分支上

命令git merge dev
在這裏插入圖片描述
注意到上面的Fast-forward信息,Git告訴我們,這次合併是“快進模式”,也就是直接把master指向dev的當前提交,所以合併速度非常快。

在這裏插入圖片描述

再次查看hello.txt文件內容
命令:cat hello.txt

在這裏插入圖片描述
可以看到,和dev分支的最新提交是完全一樣的。

合併完分支後,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉後,我們就剩下了一條master分支。

合併完成後,刪除dev分支
命令 git branch -d dev
在這裏插入圖片描述
在這裏插入圖片描述

查看當前分支
命令: git branch
在這裏插入圖片描述
發現只剩下master分支了

解決衝突

創建新的分支feature1並切換到feature1分支

命令 git checkout -b feature1
在這裏插入圖片描述
修改hello.txt文件內容
命令 vim hello.txt
在這裏插入圖片描述
在featurel分支上提交
命令git add hello.txt
命令git commit -m "AND simple"
在這裏插入圖片描述
切換到master分支
命令git checkout master
在這裏插入圖片描述

在master分支上把hello.txt文件
命令 vim hello.txt
在這裏插入圖片描述
在master提交修改的hello.txt文件
命令git add hello.txt
命令git commit -m "& simple"
在這裏插入圖片描述
此時,master分支和feature1分支各自都分別有新的提交。關係如圖

在這裏插入圖片描述

這種情況下,Git無法執行“快速合併”,只能試圖把各自的修改合併起來,但這種合併就可能會有衝突.

嘗試合併
命令git merge feature1
在這裏插入圖片描述
發現出現衝突

查看項目狀態
命令 git status
在這裏插入圖片描述
查看hello.txt文件內容
命令 cat hello.txt
在這裏插入圖片描述
Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容

修改hello.txt文件
命令vim hello.txt
在這裏插入圖片描述
提交
命令git add rhello.txt
命令git commit -m "conflict fixed"
在這裏插入圖片描述
此時,master分支和feature1分支 關係如圖

在這裏插入圖片描述
查看分支合併情況
命令git log --graph --pretty=oneline --abbrev-commit
在這裏插入圖片描述
git log --graph命令可以看到分支合併圖

刪除feature1分支
命令:git branch -d feature1
在這裏插入圖片描述
finishing
當Git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。
解決衝突就是把Git合併失敗的文件手動編輯爲我們希望的內容,再提交。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章