1. 程式人生 > >204-git分支管理

204-git分支管理






git分支管理




git把我們每次提交的版本串成一條時間線
這個時間線就是一個分支

我們建立完版本庫之後
如果直接就在預設的分支上面提交
那麼現在我們操作的就是主分支
也就是 master分支

HEAD嚴格來說,不是指向提交
而是指向了master
master才是指向提交
所以HEAD指向的就是當前的分支


一開始的時候
master分支是一條線
git用master指向最新的提交
再用HEAD指向master
就能確定當前的分支
以及當前分支的提交點
每次提交,master分支都會向前移動一點
這樣,隨著不斷的提交
master分支的線也會越來越長



當我們建立新的分支,比如dev的時候
git建立了一個指標叫dev
指向了master相同的提交
再把HEAD指向了dev
就表示當前的分支在dev上

git建立一個分支很快
因為就是增加了一個dev指標
改變了HEAD的指向
工作區的檔案都沒有任何變化


不過,從現在開始,對工作區的修改和提交
都是針對dev分支了
比如新提交一次
dev指標往前移動一步,線也變長
但是master指標不變




假如我們現在在dev上的工作完成了
那麼就可以把dev合併到master上
git怎麼合併呢
最簡單的方法就是
直接把master指向dev的當前提交
那麼就完成了合併

合併完分支之後,刪除dev分支也特別快
刪除dev分支就是把dev指標刪掉
這樣我們就剩下一個master分支了




我們可以輸入
git branch
檢視我們有多少個分支
還有我們現在在哪個分支上開發

我們執行
git checkout dev
這樣就把指標放到了dev上

然後我們改一下test1.txt
helloworld001
helloworld002
helloworld003-dev

然後我們
git add code.txt
git commit -m "commit dev"

這樣的話
我們就把修改提交到了dev分支上




然後我們切換到master分支
git checkout master
git branch
切換成功
然後我們開啟test1.txt
vim test1.txt
我們發現裡面是
helloworld001
helloworld002

並沒有我們新新增的那句話




然後我們把dev的工作成果合併到master上面
git merge dev
然後就合併成功了
然後我們依然切換到master並且檢視一下
git checkout master
git branch
然後我們開啟test1.txt
vim test1.txt

發現
helloworld001
helloworld002
helloworld003-dev

說明我們現在的master和dev是一致的
dev上的內容已經被合併到master上面了





然後我們這次的開發工作已經完成了
那麼我們刪除dev
git branch -d dev
git branch
現在只剩下master了





我們來總結一下分支管理的命令
1. git branch
2. git branch <name>
3. git checkout <name>
4. git checkout -b <name>      建立並切換
5. git merge <name>
6. git branch -d <name>