Git 分支

貓xian森發表於2017-10-11

分支理解
當使用 git commit 進行提交操作時,Git 會先計算每一個子目錄的校驗和,然後在Git倉庫中這些校驗和儲存為樹物件。 隨後,Git 便會建立一個提交物件,它除了包含上面提到的那些資訊外,還包含指向這個樹物件(專案根目錄)的指標。如此一來,Git就可以在需要的時候重現此次儲存的快照。

Git物件
Git物件

  • blob物件, 儲存檔案快照物件
  • 樹物件, 記錄目錄結構和blob索引
  • 提交物件, 包含指向樹物件指標以及所有提交資訊

本地分支管理

  • git branch 檢視當前本地有多少分支
  • git branch -v 檢視每個本地分支的最後一次提交
  • git branch -vv 檢視本地分支的所有跟蹤分支
  • git branch --merged 檢視合併到當前分支的分支有哪些
  • git branch' --no-merged 檢視未合併到當前分支的分支有哪些
  • git branch branch-name 建立分支
  • git branch -d branch-name 刪除branch-name分支
  • git branch -D branch-name 強制刪除branch-name分支

遠端分支管理

  • 遠端跟蹤分支以(remote)/(branch)命名, 它們是遠端分支的本地引用, 表示上次你連線遠端倉庫時候分支所處的狀態
  • git ls-remote [remote-name] 獲取遠端應用的完整列表
  • git remote show [remote-name] 顯示遠端分支更多資訊
  • git push origin --delete branch-name 刪除遠端分支

分支切換

  • git checkout branch-name 切換分支
  • git check -b branch-name 建立並切換到新分支上
  • git checkout -b [branch] [remotename]/[branch] 建立一個跟蹤遠端分支的本地分支
  • git checkout --track [remotename]/[branch] 設定本地分支跟蹤遠端分支
  • git branch -u [remotename]/[branch] 設定本地分支跟蹤遠端分支

變基

  • git rebase branch-name 將當前分支變基到branch-name分支上
  • git rebase --onto master server client 取出 client 分支,找出處於 client 分支和 server 分支的共同祖先之後的修改,然後把它們在 master 分支上重演一遍
  • git config --global pull.rebase true 更改git pull預設為git pull --rebase

其它相關

  • git fetch remote-name 抓取遠端倉庫有而本地倉庫沒有的資料, 並不合併, 相當於更新跟蹤分支
  • git log --oneline --decorate --graph --all 檢視提交歷史, 分支指向以及專案分支分叉情況
  • git merge branch-namebranch-name合併到當前分支上
  • git push [remote] [branch] 推送分支到遠端倉庫