僅用於教學,文中有使用到外部網站的文章都有附上參考連結,若有疑問請來信告知 email:nickchen1998@gmail.com
以下分別針對從頭建立專案以及建立一個已經有使用 Git 的專案這兩種情況進行說明
情境:該專案並沒有使用過 Git 進行版本控制過,包含從 0 開始的專案或是已經有開發到一半的專案
demo 流程:
實作:
打開 terminal 利用 mkdir 指令建立目錄
利用 dir 指令確認目錄有被建立成功 (linux base 請使用 ls)
利用 cd 切換到該目錄
於該目錄下運行 git init
指令
打開該資料夾查看是否有 .git 目錄 (linux base 可使用 ls -al 查看)
情境:你需要加入別人開發到一半的專案,或是想從 GitHub or GitLab 上複製別人的專案下來使用或開發時
語法:git clone <網址 or 檔案位置> <複製過去的目錄名稱 (預設為複製的專案 or 目錄名稱)>
demo 流程:
實作:
切換到 Desktopp 目錄並 clone 一份名為 demo 的專案
將 clone 的專案命名為 demo_clone
確認 .git 目錄是否存在
情境:當你今天有對專案進行開發,想要將這個紀錄提交到 git 進行版本控制時
demo 流程:
實作:
切換到一個有 git 的專案目錄下
新增一個名為 demo.txt 的文字檔
運行 git add .
將編輯後的東西加入 git 進行追蹤
運行 git status
查看目前專案狀態,可以發現 git 已經有偵測到有一個新的檔案叫做 demo.txt 但是還沒有進行提交
運行 git commit -m <這個版本的簡易描述>
進行版本提交
運行 git log
查看是否提交成功,若有成功會於 log 內提示
情境:當你今天把你的程式碼改爛了,需要回到上一個版本,或是今天系統更新後出現問題,需要馬上切換到之前某個正常版本時
demo 流程:
實作:
先利用第二點說明的提交方式,再新增一個文字檔並提交
運行 git log
查看想要回到哪個版本的版本號碼,這邊假設想回到註解為 "新增文字檔" 這個紀錄
複製該版本號碼
運行 git reset --hard <版本號碼>
,進行回復
運行 git log
檢查提交紀錄是否回到指定的地方
一般來說,分支粗略分為五種,分別為 master、hotfix、release、develope 以及 feature,下面分別進行介紹
master:專案的主要分支,於其他種類的分支進行開發後,最終都會 merge 到此分支上,於正式環境上部屬的專案通常都會使用此分支,每個 git 專案預設都會有一個名為 master 的分支
hotfix:當今天位於 master 的專案突然出現了一個錯誤,需要緊急修正時,會建立一個分支來做緊急處理,此分支必須優先處理
release:專案開發中,每個版本都會建立一個分支,通常會部屬在正式環境用於測試將 develope 以及 feature 合併後確認專案是否有問題,若沒有問題則會在做完測試後,merge 到 master 分支上
develope:為針對 release 分支的專案需求切出來的大項目,例如:前端、後端
feature:針對 develope 每個細項功能所開出的分支,例如:後端功能當中的登入、登出,都可以個別開出一個細小的分支
當然根據公司或是需求不同,不一定會將分支開的這麼細,不過通常最少都會有 master、hotfix 以及 release 這三個比較大方向的分支
註:分支只是一種概念,是人訂出來的,對於 git 來說就只是一個分支,並沒有所謂建立 hotfix 分之這種事,下方圖片簡單介紹了一下後人歸納出的五種類型的分支,並各自會於什麼時候合併到哪裡
圖片參考位址:https://expressus.io/uploads/beautiful-gitflow-workflow-diagram.png
git branch
確認目前所在分支,終端機會印出所有分支並在目前所在的分支名稱前加上星號
git branch <分支名稱>
若在上述的指令後面加上一個分支名稱,則會依照此名稱建立一個分支
可以看到下圖當中我們利用 git branch demo
建立一個名為 demo 的分支,並利用 git branch
查看所有分支
git checkout <分支名稱>
可以利用此指令進行分支的切換
下途中我們利用 git checkout demo
切換到 demo 這個分支,並利用 git branch
查看所有分支
情境:當今天一份專案同時有超過一個人以上在編輯,難免會有兩個人同時編輯到同一行程是碼或是同個檔案的問題,而如果要將這兩份位於不同分支上的專案進行合併 (merge) 的話,就會造成衝突
demo 流程:
實作:
進入一個已經有使用 git 的專案
圖片當中顯示進入 demo 這個專案,並且該專案有 .git 資料夾以及 demo.txt 這個檔案
利用 git branch demo
建立一個名為 demo 的分支
利用 git checkout demo
切換到 demo 分支上並利用 git branch
確認目前所在分支
在 demo 分支上針對 demo.txt 進行編輯並存檔
進行 commit 提交
利用 git checkout master
切換到 demo 分支上並利用 git branch
確認目前所在分支
在 master 分支上針對 demo.txt 的同樣一行的地方進行ㄅㄧ的地方進行編輯並存檔
進行 commit 提交
在 master 分支上利用 git merge demo
將 demo 分支合併過來,系統會跳出發生衝突提示
在 master 分支上打開 demo.txt 可以看到內容如下
Git 會將有發生衝突的地方進行標示,HEAD 表示目前所在分支的內容, === 下方為合併過來的內容
整理想保留下來的內容 (解決衝突) 並存檔
進行 commit 提交
說明:在解決衝突的過程當中,若你的專案是有兩個人以上進行編輯,請務必和發生衝突的分支負責人進行討論,看看該怎麼樣將檔案進行合併,才不會誤刪別人的工作內容或是造成系統的錯誤
雲端泛指可以使用 git 將程式碼推上網路上的某處進行儲存的地方,目前常用的有 GitHub、GitLab
將程式碼推上雲端的情況大約分為兩種,一為雲端儲存庫為新的,需要手動建立連線,另一個則為專案本身就是從雲端上複製下來的,將利用 GitHub 針對此兩種情況進行說明
情境:假設今天在本地端有一個專案已經有用 git 進行版控了,想要將專案推上在 GitHub 的全新儲存庫時
demo 流程:
實作:
使用 terminal 開啟一個已經有使用 git 的專案
複製 GitHub 專案網址
ex:https://github.com/nickchen1998/test.git
運行指令 git remote add <連線名稱> <專案網址>
進行連線
連線名稱可以自行命名,通常命名為 origin
運行指令 git remote -v
查看連線是否新增成功
運行指令 git push
進行推送
初次進行推送會提示需要進行一些設定,按照提示輸入 git push --set-upstream origin master
往後要進行推送只需要使用 git push
下圖可以看到第一次進行推送時需要按照提示進行輸入
下圖可以看到按照提示輸入後即可正常進行推送
前往 GitHub 進行查看
git remote -v
查看連線,會發現 git 會幫你直接建立好連線,後續有任何更動可以按照 git add .
> git commit -m "message"
> git push
這三個步驟即可進行推送git push
指令預設會將所在分支推送到對應連線專案上的同個分支,由於連線數量可以不只一個,且分支通常也不會只有 master,這時候就可以透過更改 git push <連線名稱> <分支名稱>
來進行推送