[Git] TL;DR
參考資料
- Git & GitHub 教學手冊 | W3HexSchool
- Learn-Git-in-30-days | Will保哥30天學會Git(Github)
- 圖解Git(需對Git有基本認識)
- Git branch小遊戲
相關連結
內容簡介
Git是身為工程師必學的一項工具。本篇主要是先前剛開始學習時,自己整理在notion的筆記。因為不打算在notion長期儲存筆記了,所以將文章搬移到這邊。
caution
因為使用的是Mac的作業系統,有一些終端機的指令可能會與windows不同,例如列出資料夾在mac中是使用ls指令,在windows則是使用dir。以下文章主要都是以mac系統為主。
圖片版權聲明
本篇筆記內部分圖片來自於w3hexschool。
快速查詢指令
基礎指令
- 本地數據庫初始化:git init
- 單一檔案加入索引:git add <檔案名稱>
- 所有檔案加入索引:git add .
- 取消這次的stage:git restore —stage <檔案名稱>
- 刪除索引中的檔案(回到untracked):git rm --cache <檔案名稱>
- 提交版本:git commit -m "填寫版本資訊"
- 觀看當前狀態:git status
- 瀏覽歷史紀錄:git log
遠端數據庫指令
- 本地數據庫加入遠端數據庫:git remote add <遠端數據庫簡稱> <url>
- 本地資料推送到遠端數據庫:git push -u <遠端數據庫簡稱> <分支名稱>
- 從遠端數據庫下載同步到本地數據庫:git pull
- 克隆遠端數據庫:git clone <HTTPS:URL>
git push -u <遠端數據庫簡稱> <分支名稱>其中的-u代表預設會推送到哪個遠端數據庫,在社設推好設推送據的據庫之後,可以單純使用git push來推送 建議還是完整輸入需要推送的數據庫是哪個為佳
分支相關指令
- 移動HEAD查閱不同commit時的資訊:git checkout SHA-1// SHA-1可以利用git log查詢,僅需輸入前幾碼即可
- 創建分支:git branch <新分支名稱>// 可以利用git checkout <分支名稱>來查詢該分支名稱,而不用使用SHA-1
- 用checkout創建分支:git checkout -b <分支名稱>
- 合併分支:git merge <被合併的分支名稱>// 需要注意這邊須先將HEAD移動到要合併的分支(較舊的。 接著被合併的分支需要指定較新的分支
- 合併分支(強制非快轉):git merge <被合併分支名稱> —-no—ff// 即使會觸發快轉模式,使用這個指令可以強制變成非快轉(會多出一個commit)
- 查看分支:git branch
- 刪除分支:git branch -d <branch name>// 需要注意如果要刪除分支時,要先將HEAD指向其他分支才可以刪除
- 強制移動分支指向:git branch -f <branch name> <target SHA-1>//移動分支所指向的位置
還原指令

- 刪除尚未加入追蹤的檔案
- 查看將會被刪除的檔案名稱:git clean -n
- 強制刪除檔案:git clean -f
- 更多功能(選擇性刪除等):git clean -i
 
- 查看將會被刪除的檔案名稱:
- 從Modified回到UnModified(放棄中間的變更)
- 放棄單一檔案變更:git checkout <file name>
- 放棄所有檔案的變更:git checkout .
 
- 放棄單一檔案變更:
- 回到當前版本
- 將所有Staged中的檔案退到Modified:git reset HEAD
- 退回到這個commit的UnModified狀態:git reset HEAD —-hard
- 退到上一個版本並且不保留任何其他資料:git reset HEAD^
- 退到指定版本:git reset “SHA-1”
 
- 將所有Staged中的檔案退到Modified:
- 觀看所有變更的紀錄(包含reset前的資料):git reflog