iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
自我挑戰組

DevOps的下克上之旅( ° ∀ ° )ノ゙系列 第 4

Day 4 : Git 分支與遠端倉庫

  • 分享至 

  • xImage
  •  

遠端倉庫

打RPG的時候,隊友的佔位與分配是很重要的! 後排玩家是要對準BOSS的弱點來個會心一擊,還是一個大招砸在前排戰士的頭上,最依賴的就是合理的分配負責區域。寫code也一樣,減少摩擦、劃分區域、互相幫助,才是好的團隊合作。

通常團隊會開一個團隊成員都能專案(Repository),會開一個遠端的倉庫來存放code。無論公開私人、Github還是Gitlab,皆可。這裡介紹Github為主。

https://ithelp.ithome.com.tw/upload/images/20210905/20119044nNjyguKuTn.png

如上圖,按步驟點一點就能夠開一個新的專案了,建立好後會獲得一個該專案的URL。打開你的本地端程式。

  • git remote add <遠端名稱> <URL> 連結本地端與遠端倉庫
  • git push <遠端名稱> <分支名稱> 把本地端的code推上遠端

https://ithelp.ithome.com.tw/upload/images/20210905/20119044vR4n5BqBN1.png

如上圖,將本地端的master,推上了遠端的origin/master。其他人如何獲取遠端code呢?在某一個資料夾底下輸入:

  • git clone <URL> 把遠端的code、commit 下載到當前資料夾 (給沒有code的人)
  • git pull <遠端名稱> 把遠端最新版的code更新到本地端 (給已有code的人)

其實git pullgit fetchgit merge的合體,關於多人協作,我們在明天詳細講講,先提到一下。

  • git fetch 獲得遠端資訊
  • git merge 合併兩個分支

分支

分支(branch)是git多人協作的一個很重要的工具,在遠端倉庫中,多人一起push會導致程式衝突。為了避免每次push會有大量衝突,建議開發模式是多分支開發,每一個開發者會有自己的一個分支,當開法feature完成後合併到主幹分支。

  • git branch <分支名> 建立新的分支
  • git branch -v 查看分支
  • git checkout <分支名> 切換到分支 (HEAD的移動)

你可以把分支想像成有人複製了一份code,可以讓你隨意修改。修改滿意後或是審核通過後再讓你把修改內容合併回原始的主要程式內(master)。如下圖:

https://ithelp.ithome.com.tw/upload/images/20210905/20119044Q8f2dMxUgI.png

我們有了兩個branch (master、feature/person_1),他們各自對Apple.txt有了commit,為了方便看,可以使用Visual Studio Code的Git History來查看,如下圖:

https://ithelp.ithome.com.tw/upload/images/20210905/20119044tUcanpQoZ0.png

綠色的是本地端、紅色的是遠端(origin master)。可以看到遠端的倉庫版本落後於本地端的版本,我們可以再加上一個README.md(顯示在專案進入點的文件)後上傳端,流程與之前大同小異。

# 在master新增了一個README.md並修改後
git add .
git commit -m "添加README"
git push origin master

這樣就能成功推上遠端了,讓遠端與本地端master同步。
https://ithelp.ithome.com.tw/upload/images/20210905/20119044ejqFdEqBWs.png

其實checkout就是HEAD的移動,所以除了checkout不同分支外,你也可以checkout到同條支線其他commit點上,如此便能看到不同commit時間點的code。

  • git checkout <哈希值(前七碼)> HEAD移動到其他commit上

  • git checkout <branch-name> HEAD移動回最新的commit上

  • git push origin <branch-name> 把分支推上遠端倉庫


上一篇
Day 3 : Git 回推版本
下一篇
Day 5 : Git 多人協作
系列文
DevOps的下克上之旅( ° ∀ ° )ノ゙30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言