什麼是 Git ?
Git 是一套可以自由切換版本與還原回到過去的一套版本控制軟體。例如說今天一個網頁設計師設計版面,第一版主色系是白色,第二版是藍色,但是老闆都覺得不好看,於是又製作了下一版本,主色系變成綠色,老闆看完後又覺得第一版白色比較好看的感覺,在這修修改改過程中,這資料夾可能已經不存在第一版的檔案了,於是 Git 就出現了,它就是專門再幫人控管版本的一套軟體。
Git 基本指令介紹
- 加入版本控制
git init
如果要讓 Git 對目錄進行版本控制,輸入git init
,下好指令後,資料夾會出現一個 .git 的檔案,這是用來控制整個專案的版本,如果不想要被版本控制的話,只需要刪除這支 .git 即可。
- 查看當前狀態
git status
加入版本控制後,如果想確認是否真的有加入,或是想確認現在這資料夾裡面有哪些檔案還沒被加入版本控制,可以使用這指令git status
,這是可以查看當前狀態的指令。
如果有檔案未被加入版本控制的話,會顯示紅字表示這些檔案雖然在此資料夾中,但還未被加入版本控制內
- 檔案加入版本控制
git add
假如你這資料夾底下有很多筆檔案,例如: 檔案1.txt、檔案2.txt、檔案3.txt,而你想把這些檔案給加入版本控制的話,可以使用這指令git add 檔案1.txt
,而如果你有100筆檔案要加入的話,可以使用git add .
這指令可以把這資料夾底下所有檔案都加入版本控制。
再上一步驟查看狀態指令過程中,有張圖片未被加入版本控制,現在就來把這張圖給加入,加入成功後,再用git status
看狀態,會跟你說有個新檔案已被加入版本控制。
提交版本
git commit -m '版本內容'
當檔案都加入版本控制後,提交一個新版本上去,使用git commit -m '版本內容'
。
小技巧:如果已經確定所有檔案都要加入版本控制的話,也可以使用 git commit -am '版本內容' ,可以把
git add .
這步驟與git commit -m '版本內容 '
合再一起。查看版本紀錄
git log
輸入git log
就可看到以前 commit 上去的版本紀錄,由上往下第一個是最新的提交紀錄。
branch (分支)
在多人協作、或同時要開發不同功能時,可能就會有衝突產生,而 branch 就是為了解決上述問題,它可以讓開發過程各自獨立,像是 修 Bug
、開發新軟體
、...等各自獨立出來變成一條支線。
branch 基本操作
- 查看目前所在分支
git branch -v
如果沒新建過 branch ,系統預設是master
- 新建 branch
git branch - <branh-name>
透過指令git branch - <branh-name>
後面加上 branch 名稱,就可以新建一條新的 branch
- 刪除 branch
git branch -d - <branh-name>
透過指令git branch -d - <branh-name>
後面加上 branch 名稱,就可以刪除 branch
刪除後再來用git branch -v
確認一下是否真的刪除
- 切換 branch
git checkout - <branh-name>
跟之前提到的 commit 版本切換是相同意思,透過git checkout - <branh-name>
可以切換到不同分支
目前所在master
透過指令git checkout - <branh-name>
切換到new-feature
,再透過git branch -v
查看目前位置
合併分支 git merge
合併分支順序
非常重要,要從最大的開始,比如說一個網站,開一條支線,然後開發了購物車功能,現在要合併的話,是要把這個購物車的支線
合併到原本的 master
,順序不能相反。
現在有兩條線,一條 master(原本網站) 一條 new-feature(另外開發的購物車功能),現在位置是 master
而現在這購物車功能已經開發完了,我要把它合併到原本的網站上,這時就要透過 gti merge
指令
再來看 log 紀錄就會發現剛剛的 new-feature 已經被合併再同一條線上了
GitHub 相關操作指令
- 把檔案推上 repository
push
- 把檔案同步上傳到 GitHub 上面
git push original - <branh-name>
- 從 repository 把檔案給拉回本地
pull
- 從 GitHub 上把檔案拉回本地
git pull original <branh-name>
- 從 repository 把檔案複製一份下載到本地
clone
git clone <SSH>
- 下載下來的檔案沒有權限,無法做任何的修改
- 複製一份成為自己的 repository
- 有權限可以修改,也可以
push
回去
- 有權限可以修改,也可以