git 基础 – 打标签
http://git-scm.com/book/zh/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE
上图来自:PHP项目治理http://www.infoq.com/cn/presentations/php-project-control
git tag v3.07.09 //(开发机)创建一个tag标签
git push origin v3.07.09 //(开发机)将标签上传到远程仓库origin的v3.07.09分支(远程如果没有此分支将自动创建此分支???)
git checkout -b v3.07.09 v3.07.09 //(服务器端)在web服务器里切换标签v3.07.09,根据tag创建一个新分支,与标签名一样,然后切换到这个分支里。也可以不创建新分支,将分支位置切换到tag标签上( git checkout v3.07.09)
git checkout v3.07.08 //(服务器端)回滚数据到上一个版本v3.07.08
至于这里v3.07.08是branch还是tag? 要看上次的操作是否创建这个分支没有。如果有此分支,则为切换到这个分支,这时可以进行修改操作。如果是tag的话,则没有办法进行修改的,此时在切换tag时会提示当前状态为“detached HEAD“, 如果即有以此为名的分支也有tag,则优先切换到分支,否则切换到tag。
此时,远程分支会有一个v3.07.09新分支.
上面最后两步,其实可以用 git pull 和 git checkout tag_name 来代替了,并没有必要根据 tag 创建分支(因为线上不需要修改代码)
原理,客户机通过tag标签上传到git服务器,生产服务器根据tag创建一个相对应的分支,然后切换到此分支,并向外提供服务.(测试的时候,在执行git checkout -b v3.07.09 v3.07.09的时候,会提示tag标签不存在,因为在此前需要重新pull下仓库数据才可以)
============================================
以下出自:http://www.oschina.net/question/1030451_105857
先 git clone 整个仓库,然后 git checkout tag_name 就可以取得 tag 对应的代码了。
但是这时候 git 可能会提示你当前处于一个“detached HEAD” 状态,因为 tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支:
1
|
git checkout -b branch_name tag_name |
这样会从 tag 创建一个分支,然后就和普通的 git 操作一样了。
参考:http://www.gowhich.com/blog/656
删除本地:
git tag -d v1.1
删除远程:
git push origin :refs/tags/v1.1
注意:
“:refs” 前面要有空格