標(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)簽一起存儲。
補加標(biāo)簽
更多的情況是經(jīng)過多次測試显押,確定了一個穩(wěn)定的歷史版本扳肛,這時候需要補加標(biāo)簽說明。
git tag -a v1.2 9fceb02 # 可通過git log查看SHA-1校驗和
推送標(biāo)簽
以上操作都在本地添加標(biāo)簽乘碑,而且git push命令不會把標(biāo)簽傳輸?shù)竭h(yuǎn)程服務(wù)器上挖息,標(biāo)簽需要明確的單獨推送。
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選項來查看已經(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即可琳袄,提交歷史中不會有記錄江场。
變基與合并操作的對比
合并操作是記錄實際發(fā)生過的事件的記錄
變基操作是記錄關(guān)于項目如何被構(gòu)建的故事
無論選擇合并還是變基,對代碼改動的結(jié)果記錄是一樣的挚歧,只是對操作的記錄不一樣扛稽,rebase讓開發(fā)的記錄更好看,更簡潔滑负。merge讓每一步操作都可追溯在张。