引言
在项目版本管理中, 项目如果有一个改动相对较大的新的版本发布时, 我们通常会附加一个版本号, 比如 version 1.0, version 2.0这种形式, 在Git中, 我们可以利用标签的机制, 在版本发布的同时为版本加上标签, 这样的话, 标签其实就是一个指向commit的常指针, 我们可以创建和删除标签,但是标签的指针是不能移动, 这是需要注意的地方.
标签管理
标签的创建
在Git中, 在需要打标签的分支上(master
分支经常需要, dev
分支也可能需要, 一般bug
分支就没有必要), 利用命令git tag <name>
进行打标签, 同时也可以-a
和-m
选项为特定的标签添加标签说明信息.
我们可以使用git tag
来查看所有的标签, 按字母排序进行展示, 如果要查看标签的详细信息, 我们可以使用git show <tagname>
进行查看. 标签是相对于commit
存在的, 操作的对象是某一次commit
, 一般来说,如果某个版本需要标签标记, 我们可以在提交之后, 直接利用git tag <name>
来加上标签, 不过, 如果我们需要为之前的版本进行标签的添加, 我们可以先找到之前版本的commit id(可以使用git log --pretty=oneline --abbrev-commit
), 接着就可以使用命令git tag <name> to_tag_commmit_id
进行定向打标签.
如果需要, 我们可以使用私钥对标签进行签名, 此时的签名会使用PGP签名, 此性质需要gpg支持(GnuPG), 不然会报错.
至此, 我们创建的标签都存储在本地, 如果想要推送到远程, 我们可以使用git push origin <name>
推送特定的标签名, 可以待本地标签打完之后, 一起推送到云端, 利用命令
$ git push origin --tags
标签的删除
如果我们需要删除错误的标签, 如果标签还没有推送到云端, 我们可以使用git tag -d <name>
进行立即删除. 如果已经推送到了云端的话, 我们需要先要从本地删除标签, 然后手动再向远程进行推送,来进行错误标签的删除, 利用命令
git push origin :refs/tags/<name>
Github与Git自定义
Github
Github是一个开源协作的社区, 我们可以利用Github免费创建公开的项目让Github进行托管.我们可以关注别人的开源项目, 并进行fork
, fork
操作会克隆一份开源项目到你的仓库, 你可以在开源项目的基础上进行再开发, 如果你想把你自己再开发的内容贡献到原开源项目去, 你可以在Github上发起一个pull request, 等待原作者的审核.
Git的自定义
- 你可以使用命令
git config --global color.ui true
来让Git的显示结果变成彩色的输出. - 我们有时候会需要对工作区内特定的特殊文件进行忽略, 不进行监控, 不进行提交. 此时我们就需要进行自定义需要忽略的文件, 我们需要在工作区的根目录下创建一个特殊的
.gitignore
文件, 把需要忽略的文件名填进去(支持通配符), Git就会忽略这些文件. 同时Github考虑到这种需求的普遍性, 为我们提供了各式各样的模版 , 我们可以根据需要按需组合使用.
通常我们需要忽略
(1) 系统自动生成的文件
(2) 编译生成的中间文件, 可执行文件等等.
(3) 带有私有信息的配置文件 - 命令的别名
我们可以通过git config --global alias.<other_name> <original_name>
进行别名的设定, 别名的设定可以进行普通较长命令的缩减, 还可以进行直观功能性的绑定, 例如进行暂存区的撤销更改时, 我们需要使用命令git reset HEAD file
实现, 此时实现的就是unstage的功能, 我们可以用git config --global alias.unstage 'reset HEAD'
来进行绑定, 对以后unstage操作命令进行简化.下面是别人对与git log
的一个简化配置,
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
- 私有项目
Github可以免费进行公开开源项目的托管, 但是对于私有商业的项目, 就必须付费进行使用. 你可以选择交钱, 你同时也可以自己搭建一个Git服务器.这部分就不涉及了, 有需要可以参考这里