[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