【git】git分支branch和標籤tag之增刪改查

參考鏈接:
http://zengrong.net/post/1746.htm
http://rogerdudler.github.io/git-guide/index.zh.html
https://www.zhihu.com/question/28784805/answer/103539899
http://blog.csdn.net/liuchunming033/article/details/52194734

——目錄——


Tag和Branch區別

tag就像是一個里程碑一個標誌一個點,branch是一個新的征程一條線;
tag是靜態的,branch要向前走;
穩定版本備份用tag,新功能多人開發用branch(開發完成後merge到master)。
tag就是一個只讀的branch,一般爲每一個可發佈的里程碑版本打一個tag


Branch

查看分支/標籤

前面有 * 且標爲綠色的爲當前分支

git branch --list
git tag --list

查看遠程:

遠程分支會標紅

git branch -a

新建分支+切換推送

創建一個叫做“feature_x”的分支,並切換過去:

git checkout -b feature_x

切換回主分支:

git checkout master

除非你將分支推送到遠端倉庫,不然該分支就是 不爲他人所見的:

git push origin feature_x

合併merge

以在你的工作目錄中 獲取(fetch) 並 合併(merge) 遠端的改動。
要合併其他分支到你的當前分支(例如 master),執行:

git merge <branch>

在這兩種情況下,git 都會嘗試去自動合併改動。遺憾的是,這可能並非每次都成功,並可能出現衝突(conflicts)。 這時候就需要你修改這些文件來手動合併這些衝突(conflicts)。改完之後,你需要執行如下命令以將它們標記爲合併成功:

git add <filename>

在合併改動之前,你可以使用如下命令預覽差異:

git diff <source_branch> <target_branch>

TIPS:merge之後記得要push到遠程倉庫。

刪除分支/標籤

刪除本地:

git branch -d feature_x

刪除遠程:

git push origin --delete feature_x
git push origin --delete tag version_x

或者,可以推送一個空分支到遠程分支,相當於刪除遠程分支:

git push origin :feature_x

這是刪除tag的方法,推送一個空tag到遠程tag:

git tag -d version_x
git push origin :refs/tags/version_x

在fetch之後刪除掉沒有與遠程分支對應的本地分支:

git fetch -p

重命名

在git中重命名遠程分支,其實就是先刪除遠程分支,然後重命名本地分支,再重新提交一個遠程分支。


Tag詳解

標籤可以針對某一時間點的版本做標記,常用於版本發佈。

1、列出標籤

$ git tag # 在控制檯打印出當前倉庫的所有標籤

$ git tag -l ‘v0.1.*’ # 搜索符合模式的標籤

2、打標籤

git標籤分爲兩種類型:輕量標籤和附註標籤。輕量標籤是指向提交對象的引用,附註標籤則是倉庫中的一個獨立對象。建議使用附註標籤。

2.1、創建輕量標籤

$ git tag v0.1.2-light

2.2、創建附註標籤

$ git tag -a v0.1.2 -m “0.1.2版本”
創建輕量標籤不需要傳遞參數,直接指定標籤名稱即可。
創建附註標籤時,參數a即annotated的縮寫,指定標籤類型,後附標籤名。參數m指定標籤說明,說明信息會保存在標籤對象中。

2.3、補打標籤

$ git tag -a v0.1.1 9fbc3d0
打標籤不必要在head之上,也可在之前的版本上打,這需要知道歷史某個提交(通過git log獲取)。

3、切換到標籤

與切換分支命令相同,用git checkout [tagname]
先列出所有標籤
$ git tag

再用git show命令可以查看標籤的版本信息:
gitshowv0.1.2再切換標籤 git checkout v0.1.2

4、刪除標籤

誤打或需要修改標籤時,需要先將標籤刪除,再打新標籤。
$ git tag -d v0.1.2 # 刪除標籤
參數d即delete的縮寫,意爲刪除其後指定的標籤。
給指定的commit打標籤
打標籤不必要在head之上,也可在之前的版本上打,這需要你知道某個提交對象的校驗和(通過git log獲取)。

5、標籤發佈

通常的git push不會將標籤對象提交到git服務器,我們需要進行顯式的操作:
$ git push origin v0.1.2 # 將v0.1.2標籤提交到git服務器

$ git push origin –tags # 將本地所有標籤一次性提交到git服務器

6、實戰

想看之前某個標籤狀態下的文件,可以這樣操作:
1.git tag 查看當前分支下的標籤
2.git checkout v0.21 此時會指向打v0.21標籤時的代碼狀態,(但現在處於一個空的分支上)
3. cat test.txt 查看某個文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章