iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0
Software Development

後端基礎PHP+Mysql & Laravel 30日養成計畫系列 第 16

Day 16 Git入門教學:將檔案加入版本控制系統下

什麼是Git? 為什麼要學Git?

什麼是git,最標準的官方回答就是,他是一種分散式版本控制系統。
但什麼是版本控制?分散式又是什麼意思?

每一次對檔案做的任何更動如新增、刪除檔案或修改檔案內容,都是一個版本,
而版本控制系統能幫你紀錄這每一次的狀態變化,有了版本控制,就能追蹤專案從起步到完工之間的整個過程。
若專案進行到某處發現出了問題,可以回到上一步重新來過,這也是我們之所以要學會使用git的主要原因之一。

而版本控制系統主要分為中央式及分散式,
傳統上版本控制系統都是採用中央式系統:所有版本控制的工作在一個伺服器進行,由中央權威管理存取權限「鎖上」檔案庫中的檔案,一次只讓一個開發者工作。
分散式系統則是能讓開發者直接在各自的本地檔案庫工作,並容許多個開發者同時更動同一檔案,而各個檔案庫有另一個合併各個改變的功能。這個方式讓開發者能不靠網路也能繼續工作,也讓開發者有充分的版本控制能力,而不需經中央權威許可。分散式系統仍然可以有檔案上鎖功能。

而常聽到的github或gitlab只是較多人在使用的商業網站而已,主要功能為git伺服器,除了提供remote端存放檔案的url外,也提供了web圖形化介面,讓使用者在這些網站上只要用滑鼠點一點就能完成一些本來需要透過linux指令來完成的動作。

基礎git指令

cd 進入project目錄下,對目錄進行git初始化:

$git init

將檔案add進git版本控制系統的追蹤下:

$git add 檔案1, 檔案2, .... 檔案n

或後面加'.',直接把目錄下的所有檔案都add進去:

$git add .

提交(commit)檔案:

$git commit -m "備註內容"

commit建議以「功能」為單位,專案每完成一部分的功能就commit一次,萬一出了問題,會比較方便找回開始出錯的地方。

當每天專案做到一個段落準備收工時,要養成將repository 上傳(push)到remote端的習慣,以防電腦突然出了問題,檔案遺失就麻煩了。
首先,若你還沒有github之類的帳號,先去註冊一個。
若是第一次使用ssh來上傳檔案,要先設定ssh金鑰。
設定方式可以參考這篇:https://blog.jaycetyle.com/2018/02/github-ssh/

接著,到github建立一個新的reposiory,複製它的SSH:
https://ithelp.ithome.com.tw/upload/images/20191001/201200243knPbT87gw.png
新增remote url:

$git remote add remote名稱 剛剛複製的SSH

push local端的repository到remote端:

$git push -u 剛才輸入的remote名稱 master
  • 第一次push 的時候要加-u 表示remote端branch為local端branch上游
  • master是預設的分支名,可以改成任意名字
  • 分支的概念類似分頁瀏覽紀錄,分出去後兩個版本會各有一份瀏覽紀錄

看到這些就表示push完成囉,可以到你的github repository裡看看:

Counting objects: 140, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (122/122), done.
Writing objects: 100% (140/140), 248.06 KiB | 2.34 MiB/s, done.
Total 140 (delta 18), reused 0 (delta 0)
remote: Resolving deltas: 100% (18/18), done.
To github.com:lulu1417/test.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 't2'.

要將遠端的程式碼抓下來,並更新本機端的程式碼時:

$git pull

將本機端的程式碼回到上一次commit的狀態(退版):

$git reset

強制回到上一次commit:

$git reset --hard

上一篇
Day 15 PHP連接資料庫
下一篇
Day 17 留言板實作(一):留言者註冊、登入功能
系列文
後端基礎PHP+Mysql & Laravel 30日養成計畫36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言