網頁

2019/1/21

Git 建立分支(branch)與合併(merge)

本篇介紹如何在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 addhello.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加入的內容。


參考:

沒有留言:

張貼留言