基礎設定

  • 查詢版本→git version
  • 查詢設定列表→git config –list
  • 輸入姓名→git config –global user.name “你的名字”
  • 輸入email→git config –global user.email “你的email”

檔案狀態

  • 工作目錄
    • git add→由工作目錄放到暫存區
  • 暫存區域
    • git commit→由暫存區放到儲存庫
  • 儲存庫

新增本地/遠端數據庫

  • 在本地資料夾新增數據庫→git init
  • 複製遠端數據庫→git clone 遠端數據庫網址

還原檔案

  1. 恢復檔案到最新的commit狀態

    • 單一檔案:git checkout 檔案名稱 or git restore 檔案名稱
    • 所有檔案:git checkout . or git restore .
    • 用TortoiseGit 的Show Log 然後轉到想要的版本,在檔案上案右鍵[revert to this version]更方便
  2. reset → git reset [commit代碼|tag|代名詞] [參數]

    • 參數
      • --mixed(預設) 差異放至工作目錄
      • --soft 差異放至暫存區
      • --hard 差異丟棄
  3. [commit代碼|tag|代名詞]

    • [commit代碼|tag|代名詞]^ → 此代碼的前一個
    • [commit代碼|tag|代名詞]^^ → 此代碼的前兩個 = [commit代碼|tag|代名詞]~2
    • [commit代碼|tag|代名詞]^^^ → 此代碼的前三個 = [commit代碼|tag|代名詞]~3
  4. 還原工作目錄與索引,會跟最後一次commit 保持一樣→git reset --hard

    • 所有尚未commit都會還原,需要很小心使用
  5. 刪除最近一次 commit →git reset --hard HEAD^

  6. 上面語法如果刪除錯了可以再用此語法還原 →git reset --hard ORIG_HEAD

  7. 刪除最近一次 commit,但保留異動內容→git reset --soft HEAD^

  8. commit 後發現有幾個檔案忘了加入進去,想要補內容進去時→git commit --amend

看程式碼是誰寫的

git blame 檔案名稱

分支

  1. 顯示所有本地分支→git branch
  2. 新增分支→git branch 分支名稱
  3. 新增分支→git branch 分支名稱 [commit] → 再某個commit上加分支
  4. 切換分支→git checkout 分支名稱
  5. 切換到歷史版本→git checkout XXXXXX(SHA前4-6碼 或tag名稱)
  6. 合併指定分支到目前的分支→git merge 分支名稱
  7. 將現在分支重新接到其他分支後面→git rebase 分支名稱
    • 例如現在在dog分支,想要接到cat分支後面,則下:git rebase cat
    • 原本dog分支出來的commit會跑到cat分支的後面
  8. 刪除分支→git branch -D 分支名稱
  9. 如果該分支還沒被完全合併但仍想強制刪除,則勾選「Force delete」就可順利刪除。

分支應用情境

根據 Git Flow 的建議,主要的分支有 master、develop、hotfix、release 以及 feature 這五種分支,各種分支負責不同的功能。其中 Master 以及 Develop 這兩個分支又被稱做長期分支,因為他們會一直存活在整個 Git Flow 裡,而其它的分支大多會因任務結束而被刪除。

flow

Master 分支

主要是用來放穩定、隨時可上線的版本。這個分支的來源只能從別的分支合併過來,開發者不會直接 Commit 到這個分支。因為是穩定版本,所以通常也會在這個分支上的 Commit 上打上版本號標籤。

Develop 分支

這個分支主要是所有開發的基礎分支,當要新增功能的時候,所有的 Feature 分支都是從這個分支切出去的。而 Feature 分支的功能完成後,也都會合併回來這個分支。

Hotfix 分支

當線上產品發生緊急問題的時候,會從 Master 分支開一個 Hotfix 分支出來進行修復,Hotfix 分支修復完成之後,會合併回 Master 分支,也同時會合併一份到 Develop 分支。

為什麼要合併回 Develop 分支?如果不這麼做,等到時候 Develop 分支完成並且合併回 Master 分支的時候,那個問題就又再次出現了。

遠端數據庫操作

  • 複製遠端數據庫 →git clone 遠端數據庫網址
  • 查詢遠端數據庫 →git remote
  • 將本地分支推送到遠端分支 →git push 遠端數據庫名稱 遠端分支名稱
  • 將遠端分支拉下來與本地分支進行合併 →git pull

標籤

  • 查詢標籤→git tag
  • 查詢詳細標籤→git tag -n
  • 刪除標籤→git tag -d 標籤名稱
  • 新增輕量標籤→git tag 標籤名稱
  • 新增標示標籤→git tag -am “備註內容” 標籤名稱

暫存

  • 暫時儲存當前目錄→git stash
  • 瀏覽 stash 列表→git stash list
  • 還原暫存→git stash pop
  • 清除最新暫存→git stash drop
  • 清除全部暫存→git stash clear