iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
0

版本控制

今天主要探討的是『版本控制』的概念,
版本控制是目前 99.9 % 的公司都有引進的工作流程,
基本上沒有用的公司組織,非常少數沒用就快逃
因此他是許多初階工程師必備的技能之一,
不管是開發遊戲、網站、App,都一定會用到。

什麼是版本控制

再來的問題是,版本控制是什麼?
我們來看看這張猴子 conding 圖:
https://ithelp.ithome.com.tw/upload/images/20181107/20107758F6xbTd5Np6.jpg

在一般的開發流程中,很常有的狀況是,
兩個人『同時』開發同一個檔案,
有可能一個在寫Email 功能,一個在寫報表功能,
兩個人會寫在同一個區塊,
再上傳時就會出現問題,不知道要使用誰的程式碼,
或是後上傳的沒注意到,就完全覆蓋掉上個人改動的東西。

而透過版本控制,就能協助偵測比對,並紀錄每次變動,
如果之後程式出 Bug ,要比對不同版本抓戰犯或是緊急回朔,
也能透過歷史紀錄快速還原到程式碼正常的時間點,
因此版本控制對於一間成熟的軟體公司的重要性不可言喻。

版本控制的工具主要有兩個流派:Git 和 SVN,
Git 是目前大眾的主流, SVN 是過去的主流,
因此今天會以介紹 Git 為主。

Git

Git 是一種『分散式』的版控工具,
分散式的意思是,能把前面講到的『變更紀錄』分別儲存,
不需要找一台伺服器作為中心點,每個人都只能更新進去那台伺服器,
如果伺服器掛掉,大家都下班這樣XDDD
Git 可以在自己的電腦,工作夥伴的電腦,公司雲端上都建立變更紀錄的紀錄檔,
因此就算我在飛機上,也能工作,根據不同變動建立不同版本,
等到連上網路時,再把我電腦上的版本更新到公司雲端的 Git 就好了!

再來要介紹兩個 Git 常用的雲端平台,Github 和 GitLab~
尤其是 Github ,可以說是學習 Git 的人一定要會操作使用的平台。

Github

https://kanbanize.com/blog/wp-content/uploads/2014/11/GitHub.jpg

Github 是一個能讓開發者把程式碼儲存在雲端的平台,
而儲存方法是使用 Git 操作。
Github 是世界上最大的程式碼儲存平台,
幾乎所有的開源專案都在 Github 上面,
你可以找到許多套件、框架的原始碼,
像是知名 PHP 套件 Laravel, Google 機器學習套件 Tensflow等等..

Github 免費版就支援許多優秀的功能,
除了在撰寫說明時,能快速使用方便的 Markdown 語法,
也有非常好的社群互動、分享與溝通功能,
甚至還有像『Github page』這個功能,能把純前端檔案轉成靜態網站分享。
不過在企業版使用上仍有其他較佳的選擇,
只是針對個人版的使用上,
仍是非常推薦讀者透過 Github 來熟悉 Git 的操作流程。

Gitlab

https://struscode.com/wp-content/uploads/2017/08/head-from-gitlab-logo-small-min.png

Gitlab 基本上支援 Git 版控工具該有的所有功能,
而使用方式也和 Github 大同小異,
只是 Gitlab 最主要的特色是非常支援需要『private』的專案,
有些專案有商業性的問題,因此不會開放給他人看源碼,
Github 上隱藏版的專案是要收費的,
但 Gitlab 基本上支援無限數量的 『private』專案。

另外在小組織開發支援的工作上,Gitlab 還有提供站內“自動整合”的功能,
不像 Github 需要另外掛上第三方的自動整合工具,
因此如果是需要小組織 project 內部使用的話,很推薦使用 Gitlab 唷!

Git 基本指令

Git 有幾個基本指令是一定要懂的,
而且大部分的情況下,用這些指令就能走透透( 個人用途啦 )。
另外,Git 需要另外安裝喔!
不同作業系統的 Git 安裝法

另外在看之前,我們來看看基本『更新已存在專案』的流程:

https://ithelp.ithome.com.tw/upload/images/20181107/20107758QDKJjt4qog.png

再來會提到常用到的指令。

config

config 指令要先設定 git 的 Email, name 等等參數

$ git config --global user.name “使用者的名稱”
$ git config --global user.email “遠端 Git 帳戶的Email ”

init

init 會初始化”當下所處資料夾位置”的版本紀錄,要非常小心,
如果有版本紀錄,就會初始化該紀錄,沒有就會創建一個新的,
不要不小心把已經傳遞好幾年的版本給初始化掉啦XD

$ git init

clone

clone 是用來複製他人的專案到自己電腦上,
並且可以將他的變更版本紀錄給一起複製過來。

$ git clone 檔案的 git 位置

通常該位置都會以 git 結尾,長得如下:
https://github.com/aaabbbccc/political_platform.git
因此就會寫成

$ git clone https://github.com/aaabbbccc/political_platform.git

status

這個指令可以看看當前目錄的狀態,
可以分辨哪些檔案已被加進『準備紀錄區』,
那些還沒被列入記錄中的等等等...

$ git status

add

這個指令就是指定哪些檔案要加進『準備紀錄區』,
可以看到流程圖中,我們就是把 “clear.html“ 加進『準備紀錄區』,因此變成綠色,
可以新增特定檔案的指令如下:

$ git add clear.html

如果想要新增該目錄下所有的檔案:

$ git add .

commit

這個指令就是把所有在『準備紀錄區』內的檔案,真正的列入紀錄,
除了紀錄外,也要加上這筆紀錄的名稱,例如:

$ git commit -m ”紀錄的名稱”

用 -m 的後綴詞,加上紀錄的名稱即可

remote

設定好紀錄檔後,再來就要指定更新到的雲端,
因此要設定雲端的位址,語法如下:

$ git remote add 遠端的名字  遠端的網址

假設我們就要設定,專案檔案來源為遠端的位置,
可以寫成如下:

$ git remote add origin  https://github.com/aaabbbccc/political_platform.git

push

擁有紀錄檔了,設定好遠端了,
最後就是把本地的程式碼,更新到遠端啦!

$ git push 遠端的名字 遠端的分支名稱

遠端的分支名稱 ( branch ),如果大家一開始使用,
基本上就是使用 master ,
除非進入比較複雜的使用,才可能會有不同的變化,
因此如果要更新到上面設定好的遠端位置:

$ git push origin master

這樣就能更新上去了!!

如果有任何問題,或是指證文中的錯誤,歡迎寄信給我或留言在下面喔~


上一篇
[Day23] Linux 進階指令
下一篇
[Day25] Devops - 雲端服務
系列文
菜鳥後端工程師的第一門課30

1 則留言

0
t7552175
iT邦新手 5 級 ‧ 2018-11-12 10:38:45

只是 Gitlab 最主要的特色是非常支援需要『provate』的專案,
應該是 private?

沒錯,是錯字~
感謝你!

不會~ 我覺得你文章寫得不錯
連我這個菜鳥前端都看得懂 學到不少
謝謝

如果能夠對讀者有所幫助,就是對我最大的肯定了
/images/emoticon/emoticon02.gif

我要留言

立即登入留言