開始之前
- mkdir demo
 創建一個叫做demo的資料夾
- cd
 cd加一個空白鍵後,再按下tab鍵會列出當前目錄的清單
- cd demo
 前往demo這個資料夾
- cd ..
 回資料夾的上一層
- cd ~
 回到電腦最外層,像是根目錄Home之類的。
- touch index.html
 新增index.html這個檔案
- git init
 初始化git,創建git儲存庫。
基礎操作
- git add .
 將所有檔案加入索引,準備加入版本控管。
- git status或- git sta
 查看現在索引的狀態,哪些檔案未被追蹤或已經追蹤。
- git commit -m'輸入一些備註'
 將索引內容建立一個新的版本控管,未來可能會有很多個。
- git add app
 跟- git add .差別在於只將app資料夾的檔案加入索引。
狀況一:終端機畫面好亂想清空
- clear
狀況二:想查看過去版本的內容(HEAD)
HEAD為目前所在位置的指標。
- git checkout [前四碼]
 回到以前得某個指定版本狀態,查看過去的內容。
- git checkout master
 還原最新版本。
復原檔案
狀況一:某個檔案改壞了,需要復原到上一個(最新)Commit紀錄
- git checkout 檔案名稱
 將這個檔案復原回最新一個(上一個)版本。
狀況二:整個工作目錄都亂了,想要還原整個工作目錄的檔案和索引
- git reset --hard
 將整個目錄復原到最新的Commit狀態,例如:
 Commit1 –> 編輯 –> Commit2 –> 編輯發現壞了
 使用- git reset --hard回到
 Commit1 –> 編輯 –> Commit2
復原索引
狀況一:git add .後希望某個檔案不要加入追蹤了
觀念提醒
- 要使用 Git 版本控管,你必須先建立「工作目錄」與「版本庫」。(mkdir, git init)
- 你要先在「工作目錄」進行開發,你可能會建立目錄、建立檔案、修改檔案、刪除檔案、… 等操作。
- 然後當你想提交一個新版本到 Git 的「儲存庫」裡,一定要先更新「索引」狀態。(git add, git mv, …)
- 然後 Git 會依據「索引」當下的狀態,決定要把那些檔案提交到 Git 的「儲存庫」裡。(git status)
- 最後提交變更時 (git commit),才會把版本資訊寫入到「物件儲存區」當中 (此時將會寫入 commit 物件)。
 資料來源-保哥
branch 分支
- git branch
 查看目前有哪些分支。
- git branch 分支名稱
 建立一個新的分支。
- git checkout 分支名稱
 前往這個分支。
- git merge 分支名稱
 假設我有兩個分支:master和branch,今天我要將branch合併(merge)至master時,請注意必須將目前分支指回master- 建議搭配GUI(source tree)使用。 - push 推送分支到遠端數據庫(reomte)數據庫可能會有很多個,像是開發用或正式發布用的。
- git reomte
 查詢目前有哪些遠端數據庫名稱,以github來說會取得預設的名稱origin
- git push [origin] [branch_name](你要推的分支)
 透過以上方法將分支推到github上
pull分支(遇到衝突時)
當有多人協作的專案時,會有不同時間上傳的不同版本問題,因此產生衝突。
- git pull
 需先透過- git pull將最新版本pull下來,此時會自動進行merge,並跳出一個視窗: 
 在此輸入- :wq!儲存並退出即可,此為Vim是Git預設的編輯器,查看下方Vim介紹。
Vim
Vim是Git預設的編輯器,這邊是希望你寫一些備註說明為什麼要合併,預設說明如上截圖(不含#號部分內容)。主要會用到的指令:
Normal模式:
- i(insert)或- a(append)或- o(新增一行)進入Insert模式
- :w存檔
- :q離開
- :wq存檔然後離開
Insert模式:(在這邊我們用來編輯Commit訊息)
- esc鍵或- ctrl+[退回Normal模式
fetch
git pull = git fetch + git merge
pull就是將遠端的分支和你本地的分支進行合併(merge)的動作,
但有時候你不希望pull下來導致自己的數據庫太亂又擔心有衝突時,可以先使用下面這個指令。
- git fetch
可以等到你看過沒問題後,再進行合併(merge)的動作。
所以如果不滿意呢?不需要撤销, git fetch 對本地分支没有影響。
