Learn Git Branch學習隨筆
一、提交與分支
git commit 提交紀律
git branch 簡單地指向某個提交記錄,*表示當前所在分支
git checkout <name> 切換分支
git checkout -b <your-branch-name> 建立並切換
二、合併分支
1)方式1:git merge 產生一個特殊提交記錄,包含2個父節點
git merge <branch-name> 合併另一個分支到當前分支(當前分支包含了程式碼庫所有修改)
git chekout <branch-name> & git merge master 切換到<branch-name>分支,並git merge <master>合併master到當前分支(<branch-name>分支也包含了程式碼庫所有修改)
2)方式2:git rebase 取出一系列的提交記錄,複製,在另一個地方逐步放下去 *在<branch-name>分支上
git rebase master
git checkout master
git rebase <branch-name>
三、HEAD——指向你正在其基礎上進行工作的提交記錄
通過hash值指定提交記錄(git log 檢視提交記錄的hash值)
git checkout <hash值> 分離HEAD
四、相對引用
1)^:向上移動1個提交記錄
2)~<num>:向上移動多個提交記錄
git checkout master^ 切換到master的父節點
git checkout master^^ 切換到master的第2個父節點
git checkout HEAD^
git checkout HEAD~4
git chekout HEAD^2
git checkout HEAD~^2~2
五、強制修改分支位置(移動分支)
git branch -f master HEAD~3
六、撤銷變更
1)git reset 把分支退回幾個提交記錄,原來指向記錄就像從來沒提交過一樣
git reset HEAD~2 退回之後,原生代碼庫根本不知道有退回的這2次提交(對遠端分支無效)
2)git revert 撤銷更改,並分享給別人(通過push到遠端倉庫)
七、整理提交記錄
1)git cherry-pick <提交hash值>... 將一些提交複製到當前所在的位置(HEAD)下面(需要知道提交記錄的hash值)
2)互動式rebase(不知道提交記錄hash值時)
git rebase -i HEAD~4 (1)調整提交記錄的順序 (2)刪除不想要的提交 (3)合併提交
八、本地棧式提交
九、Git Tags——永久地將特定的提交命名為里程碑,標識特定位置(不隨提交而移動)
git tag V1 C1
十、git describe——描述tag
git describe <ref>