git学习三——打发布标签(tag)

来源:互联网 发布:金蝶房地产软件 编辑:程序博客网 时间:2024/06/05 05:39

比如今天要发布一个版本了,我们要打标签:release-0.1;

lenovo@lenovo-PC MINGW64 /g/Git_learn/tt (master)$ git log --pretty=oneline6c694be844bb4af6a8b936babb957e15cd3335d0 Merge branch 'issue2'92c7a61ebbb5cab38284f40c28ae3646fa1654d3 Merge branch 'issue1' er3ab754e3225039cfddd8cc648b29eb9fb18e64ec issue1_file44d307ee2687c5202d23e17563092c0b5f929da4 issue2_fieldee33c6d9c31c2bfe23d0539b6e1d5d3a3795bc9 Merge branch 'issue1'45ae8155e967f12a17c6b53dd2de887992309ff0 issue1_file2520167b60acc0c3b26147b4c46887124f78ae0a5 ta12883e29c8ac8fd4a5b9d7d5a706b381e40965d issue1_file'53487b9ae5a81e953ea430d670f0aa0d111db06d 010d7b47e5ca2df2484cda6a209b12402710e61a7f conflict fixed391ab5fc87c91c298811033402e1142143979173 tt merge *095352321632a4b88aca7b540a715830e285def3e77c tt commit first1960953e07c9fe7c15efd9a2a40baec96befd1da tt_third second commit4aa3b67bd87e227f9fa96b1a86790f97f7d8bfeb tt_third commit40d4754a6f1b9898b751ae513ec88d47bbc2b2a6 test

我们决定使用520167b60acc0c3b26147b4c46887124f78ae0a5 t
作为今天的发布版本

lenovo@lenovo-PC MINGW64 /g/Git_learn/tt (master)$ git tag -a release-0.1 520167b6 -m "release version"lenovo@lenovo-PC MINGW64 /g/Git_learn/tt (master)$ git tag -lrelease#或者这样查看 --decoratelenovo@lenovo-PC MINGW64 /g/Git_learn/tt (master)$ git log --pretty=oneline --decorate6c694be844bb4af6a8b936babb957e15cd3335d0 (HEAD -> master Merge branch 'issue2'92c7a61ebbb5cab38284f40c28ae3646fa1654d3 Merge branch 'issue1' er3ab754e3225039cfddd8cc648b29eb9fb18e64ec (issue1) issue1_file44d307ee2687c5202d23e17563092c0b5f929da4 (issue2) issue2_fieldee33c6d9c31c2bfe23d0539b6e1d5d3a3795bc9 (tag: release) Merge branch 'issue1'45ae8155e967f12a17c6b53dd2de887992309ff0 issue1_file2520167b60acc0c3b26147b4c46887124f78ae0a5 ta12883e29c8ac8fd4a5b9d7d5a706b381e40965d issue1_file'53487b9ae5a81e953ea430d670f0aa0d111db06d 010d7b47e5ca2df2484cda6a209b12402710e61a7f conflict fixed391ab5fc87c91c298811033402e1142143979173 tt merge *0953

如果你要删除tag: git tag -d release

好了,tag打好了,push这个tag;

使用git push 命令无法把这个tag提交到远端仓库中;

lenovo@lenovo-PC MINGW64 /g/Git_learn/tt (master)$ git push origin releaseCounting objects: 1, done.Writing objects: 100% (1/1), 152 bytes | 0 bytes/s, done.Total 1 (delta 0), reused 0 (delta 0)To git@github.com:topCoderzhangshuo/tt.git * [new tag]         release -> release

当别人如果要使用这个tag代码可以:

lenovo@lenovo-PC MINGW64 /g/Git_learn/newTest$ git clone https://github.com/topCoderzhangshuo/tt.gitCloning into 'tt'...remote: Counting objects: 120, done.remote: Compressing objects: 100% (9/9), done.remote: Total 120 (delta 3), reused 0 (delta 0), pack-reused 111Receiving objects: 100% (120/120), 64.76 KiB | 11.00 KiB/s, done.Resolving deltas: 100% (12/12), done.Checking connectivity... done.lenovo@lenovo-PC MINGW64 /g/Git_learn/newTest$ cd tt/lenovo@lenovo-PC MINGW64 /g/Git_learn/newTest/tt (master)$ git tag -lreleaselenovo@lenovo-PC MINGW64 /g/Git_learn/newTest/tt (master)$ git checkout releaseNote: checking out 'release'.You are in 'detached HEAD' state. You can look around, make experimentalchanges and commit them, and you can discard any commits you make in thisstate without impacting any branches by performing another checkout.If you want to create a new branch to retain commits you create, you maydo so (now or later) by using -b with the checkout command again. Example:  git checkout -b <new-branch-name>HEAD is now at dee33c6... Merge branch 'issue1'lenovo@lenovo-PC MINGW64 /g/Git_learn/newTest/tt ((release))

在 Git 中你并不能真的检出一个标签,因为它们并不能像分支一样来回移动。 如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用 git checkout -b [branchname] [tagname] 在特定的标签上创建一个新分支:

lenovo@lenovo-PC MINGW64 /g/Git_learn/newTest/tt ((release))$ git checkout -b releaseBranch releaseSwitched to a new branch 'releaseBranch'lenovo@lenovo-PC MINGW64 /g/Git_learn/newTest/tt (releaseBranch)

push tag 或者 push branch失败:
error: src refspec release-1.0.1 matches more than one.

zhangsh@D0568 MINGW64 /f/OMF (master)
$ git push origin release-1.0.1
error: src refspec release-1.0.1 matches more than one.
error: failed to push some refs to ‘https://**//OMF.git’

由于你的分支、tag有重名,产生
解决:

#git push origin refs/heads/release  指明推送分支#git push origin refs/tag/release  指明推送tagzhangsh@D0568 MINGW64 /f/OMF (release)$ git push origin refs/heads/releaseUsername for Total 0 (delta 0), reused 0 (delta 0)To https://***/OMF.git * [new branch]      release -> release
0 0