什麼是git,最標準的官方回答就是,他是一種分散式版本控制系統。
但什麼是版本控制?分散式又是什麼意思?
每一次對檔案做的任何更動如新增、刪除檔案或修改檔案內容,都是一個版本,
而版本控制系統能幫你紀錄這每一次的狀態變化,有了版本控制,就能追蹤專案從起步到完工之間的整個過程。
若專案進行到某處發現出了問題,可以回到上一步重新來過,這也是我們之所以要學會使用git的主要原因之一。
而版本控制系統主要分為中央式及分散式,
傳統上版本控制系統都是採用中央式系統:所有版本控制的工作在一個伺服器進行,由中央權威管理存取權限「鎖上」檔案庫中的檔案,一次只讓一個開發者工作。
分散式系統則是能讓開發者直接在各自的本地檔案庫工作,並容許多個開發者同時更動同一檔案,而各個檔案庫有另一個合併各個改變的功能。這個方式讓開發者能不靠網路也能繼續工作,也讓開發者有充分的版本控制能力,而不需經中央權威許可。分散式系統仍然可以有檔案上鎖功能。
而常聽到的github或gitlab只是較多人在使用的商業網站而已,主要功能為git伺服器,除了提供remote端存放檔案的url外,也提供了web圖形化介面,讓使用者在這些網站上只要用滑鼠點一點就能完成一些本來需要透過linux指令來完成的動作。
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:
新增remote url:
$git remote add remote名稱 剛剛複製的SSH
push local端的repository到remote端:
$git push -u 剛才輸入的remote名稱 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