大家都說 Git 易學難通,所以我不貪心,只求和平相處啊~
以往在自己的練習當中,屬個人小開發實作,使用 Git 的時機並不多,也不深,僅使用最基本的 clone / add / commit / push。最近在與夥伴的協作中,頻繁的使用了分支功能,深感自己對 Git 的知識不足,用的心慌慌,很怕把東西弄壞!因此利用本篇來重整一下腦中混亂的分支知識。
在團隊協作中,每個人各自分工負責的項目及功能,但如果大家都在同一個檔案合作,有時可能會出錯,卻不確定來自哪一段,會是不小心覆蓋到對方的內容。因此這時候需要開一支新的分支,各自實作後,確認沒問題再合併。
git branch
:查看目前所有分支。得知有那些分支,星號代表目前位於哪一個分支上。沒有切任何分支時,默認爲 master。
$ git branch
* master
branch1
git branch -v
:查看目前所有分支最後一次 commit 的資訊。
$ git branch -v
* branch1 5c8ea60 branch1
master 7ec2a22 first
git branch [branchName]
:切一個分支。例如切出一個名爲 branch2 的分支。
$ git branch branch2
git branch -b [branchName]
:切一個分支,並且切換到該新分支。
$ git branch -b branch2
git checkout [branchName]
:切換到另一個分支。例如切回 master。
$ git checkout master
若無該分支,會報錯。可以先用 git branch
確認分支名稱。
若切換分支前,若有編輯檔案,尚未提交,無法切分支,必須先提交或是存放到 stash
git checkout -d [branchName]
:刪除分支。例如刪除分支 branch2。
$ git branch -d branch2
但有可能這個分支,尚未與任何分支合併,表示刪掉後這個分支的資訊就沒有保存到其他分支上了。因此 Git 會提醒你以下訊息:
error: The branch 'branch2' is not fully merged.
If you are sure you want to delete it, run 'git branch -D branch2'.
確定刪除,就使用大寫 D,就可以成功刪除了。
$ git branch -D branch2
在協作中,有時我們需要拿取遠端分支來做開發。當我們 clone 整個專案到本地端後,直接使用 $ git branch
,你可能無法看到你預期的分支。需要使用 $ git branch -a
查看遠端分支,會以紅色字體標示出來。接著我們需要在本地端同步一個遠端分支。
在新版的 git 上,你只需要直接切換過去,就拿到了。如上述所提到的 git checkout [branchName]
。如果無法,就需要做一些事情,首先假設想要拉下來的遠端分支稱爲 testbranch。
$ git checkout <testbranch>
$ git pull origin testbranch
以上爲今天的分支整理,希望可以跟 Git 慢慢當好朋友