Learn Git Branching
官方地址
KeyWord
- 沙盒
- 快照
Git Command
Git Commit
Git 倉庫中的提交記錄保存的是你的目錄下所有檔案的快照,條件允許的情況下,它會將當前版本與倉庫的上一個版本進行對比,并把所有差異打包到一起作為一個提交記錄,
Git 還保存了提交的歷史記錄,所以大多數提交記錄上都有父節點,
- git commit
Git Branch
Git 的分支非常輕量,他們只是簡單地指向某個提交記錄, 歌之頌之:早建分支!多用分支!創建再多的分支也不會造成存盤和記憶體上的開銷,并且按照邏輯分解作業到不同的分支要比維護那些臃腫的分支簡單多了,
再將分支和提交記錄結合起來后,我們就可以看到兩者如何協作,現在只要記住使用分支其實就相當于再說:我想基于這個提交以及它所有的父提交進行新的作業,
-
分開操作:
- git branch
- git checkout
- git branch
-
創建一個新分支并切換到新建的分支:
- git checkout -b
- git checkout -b
分支與合并
現在探討如何將兩個分支合并在一起,現在遇到一個新的場景:新建了一個分支,在其上開發某個新功能,開發完成再合并會主線,
Git Merge
在Git中合并兩個分支時會產生一個特殊的提交記錄,他有兩個父節點,翻譯成自然語言:我要把兩個父節點本身及他們所有的祖先都包含進來,
合并后的分支包含了對代碼庫的所有修改,
Git Rebase
分支合并的第二種方法,Rebase 實際上就是取出一系列的提交記錄,“復制”它們,然后在另外一個地方逐個的放下去,
Rebase的優勢是可以創造更線性的提交歷史,如果只允許使用Rebase,代碼庫的提交歷史將會變得例外清晰,
總結:這兩條命令使用下來,感覺主語有點不一樣, git merge 命令的主語是master, 作用是把記錄合并到master,git rebase 的主語是bugFix,意思是把bugFix上的提交記錄合并到master的未來節點,master 還要再 git rebase 這樣就相當于HEAD回到了master的最新記錄,
Git HEAD
HEAD 是一個對當前檢出記錄的符號參考,也就是指向你正在其基礎上進行作業的提交記錄,
HEAD 總是指向當前分支上最近一次提交記錄,大多數修改樹的 Git 命令都是從改變 HEAD 的指向開始的,
HEAD 通常情況下是指向分支名的,在你提交時,改變了分支的狀態,這一變化通過HEAD變得可見,
- git checkout
HEAD相對參考
使用相對參考的話,你就可以從一個易于記憶的地方開始計算,
- 兩個簡單的用法
- 使用^向上移動一個提交記錄,
- 使用~
向上移動多個提交記錄,
~運算子
如果你想在提交樹中向上移動很多步的話,除了多次使用運算子,可以使用~運算子一次解決,~運算子后面可以跟一個數字(可選,不跟數字時與相同,向上移動一次),指定向上移動多少次,
- git checkout HEAD~
強制修改分支位置
- git branch -f
HEAD~
Git 撤銷變更
撤銷變更由底層部分和上層部分組成,
- git reset
- git revert
Git Reset
git reset 通過把分支記錄回退幾個提交記錄來實作撤銷改動, 作用范圍:本地分支
Git Revert
雖然在你的本地分支中使用 git reset 很方便,但是這種“改變歷史”的方法對大家一起使用的遠程分支是無效的,
所以,為了撤銷更改并分享給別人,我們需要使用 git revert .
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/229046.html
標籤:其他
