本篇介紹如何在Git建立分支(branch),然後將分支合併(merge)。
在如何第一次將local repository push到Github專案我們已經將hello.txt
推到github上的my_project repository的master。
輸入git branch dev
來新建一個branch名稱為"dev"。
這樣就建立了一個新的branch "dev"。
輸入git log --all
來檢視提交紀錄,可以看到多了一個本地分支(local branch) dev。另外可以看到HEAD是指向master分支,代表目前所在的分支為master。
輸入git checkout dev
將HEAD移至dev分支。輸入指令後可以看到如下訊息,且後面括弧的內容由master更改為dev了。
在一次輸入git log --all
,可以看到HEAD已經改為指向dev了。
接著開啟hello.txt
加入點文字如下,修改後存檔。
回到Git Bash輸入git status
,可以看到hello.txt
變成已被修改的(modified)且為unstaged狀態。
然後使用git add
將hello.txt
變更為staged狀態,然後輸入git commit
將修改的內容提交。
輸入git log --graph --all
可以文字圖像列出所有的分支。
從上圖可以看到dev往上前進了一個新的位置。
剛剛的建立分支及提交動作皆僅在local repository發生而已,所以接下來要將剛剛動作後的狀態推到remote repository上。
輸入git push -u origin dev
將dev分支的狀態推到遠端儲存庫origin上,並同時將此遠端分支設為dev追蹤的upstream。
輸入git log --all --graph
來檢視,此時在遠端儲存庫便也有了一個dev分支。
接下來我們會切換回master分支,在切換之前你可以打開hello.txt
看看,內容應該仍是剛剛最後加入文字後的樣子。
輸入git checkout master
將目前分支切回master分支,也就是將HEAD移到master。
切回後在右側括弧中的文字變成了master,輸入git log --graph --all
檢視,可以看到HEAD確實指回了master。
因為我們目前是在dev修改hello.txt
之前的master分支,所以此時打開hello.txt
即無任何內容。
接著輸入git merge dev
將dev的狀態合併(merge)回master,
檢視紀錄可以看到目前本地儲存庫的master與dev已經合併在一起,然而因為尚未將此狀態推到遠端儲存庫,所以遠端的master分支仍在之前的位置。
輸入git push
將master的狀態推到遠端儲存庫來更新orgin/master的狀態(因為在前一篇中本地儲存庫的master已將遠端儲存庫的orgin/master設為追蹤的upstream,所以之後只要輸入git push
就會自動把master狀態推到origin/master。)
從紀錄中可以看到目前本地master,本地dev,遠端origin/master,遠端origin/dev皆處在同個位置。
此時在開啟hello.txt
便會看到剛剛在dev加入的內容。
參考:
沒有留言:
張貼留言