標(biāo)記
Git可以把特定的歷史版本標(biāo)記為重要版本。
創(chuàng)建注釋標(biāo)簽
git tag -a v1.4 -m "add tag"
-a表示標(biāo)簽為注釋標(biāo)簽,-m指定標(biāo)記信息,它會和標(biāo)簽一起存儲。
補(bǔ)加標(biāo)簽
更多的情況是經(jīng)過多次測試,確定了一個穩(wěn)定的歷史版本,這時候需要補(bǔ)加標(biāo)簽說明。
git tag -a v1.2 9fceb02 # 可通過git log查看SHA-1校驗(yàn)和
推送標(biāo)簽
以上操作都在本地添加標(biāo)簽,而且git push命令不會把標(biāo)簽傳輸?shù)竭h(yuǎn)程服務(wù)器上,標(biāo)簽需要明確的單獨(dú)推送。
git push origin v1.5 #將1.5這一標(biāo)簽推送到遠(yuǎn)程
git push origin --tags #將所有服務(wù)器上還沒有的標(biāo)記一次性推送
分支
創(chuàng)建名稱不一致的分支
git checkout -b sf origin/serverfix
執(zhí)行完上述命令后,本地分支sf就會從origin/serverfix上獲取數(shù)據(jù)
如果想給本地已存在的分支設(shè)置跟蹤分支,或者更改本地分支對應(yīng)的遠(yuǎn)程分支,使用git branch命令的 -u或是--set-upstream-to。
git branch -u origin/serverfix
上述操作結(jié)束,可以通過git branch -vv選項(xiàng)來查看已經(jīng)設(shè)置了哪些跟蹤分支。會輸出所有本地分支的列表及每個分支跟蹤的遠(yuǎn)程分支信息。
變基
變基的工作原理:首先找到兩個要整合的分支的共同祖先,然后取得當(dāng)前所在分支的每次提交引入的更改,并把這些更改保存為臨時文件,這之后將當(dāng)前分支重置為要整合到的分支,最后在該分支上依次引入之前保存的每個更改。
git checkout experiment #當(dāng)前分支
git rebase master #目標(biāo)分支
git checkout master
git merge experiment
以上操作雖用到變基,但最終的整合效果和merge得到的是一樣的,但變基操作可以獲得更簡潔的提交歷史,得到的分支的提交歷史看起來是一條線。
撤銷提交
撤銷某一歷史提交有兩種方式
git revert commit_id #撤銷一次提交
git rebase -i HEAD~2 #對前兩次提交進(jìn)行rebase操作
第一種方式會在提交歷史中記錄下來,以撤銷add2為例:

第二種方式會彈出如下編輯器,在vim窗口中add2提交的前面改為d或者drop即可,提交歷史中不會有記錄。

變基與合并操作的對比
合并操作是記錄實(shí)際發(fā)生過的事件的記錄
變基操作是記錄關(guān)于項(xiàng)目如何被構(gòu)建的故事
無論選擇合并還是變基,對代碼改動的結(jié)果記錄是一樣的,只是對操作的記錄不一樣,rebase讓開發(fā)的記錄更好看,更簡潔。merge讓每一步操作都可追溯。