一、创建标签
标签可以简单理解为属于分支定义的别名。分支本身都会进行指针的配置(分支都会指向某一个提交点),标签却是一个固定的内容,即标签永远指向一个提交点。现在如果已经有两个分支了。
- 为master定义一个标签。master分支是程序的最终发布版本,可以说,master就是一个完整的开发程序,我们给其加上一个标签
git tag v1.0
- 查看所有的标签
git tag
但是这个标签只是针对当前的master分支,可以在一个项目之中一定会有很多个提交点,那么如何为之前的提交点打上标签?这里只需要找到提交号即可。
- 查询日志
git log --pretty=oneline --abbrev-commit
在日志上都会有提交号,下面我们针对一个提交号进行标签的定义。
- 为某个提交点(d032312)设置标签
git tag v0.6 d032312
git tag
但是此时只是显示一些很简单的标签信息,并不是很详细,那如何查看更加详细的标签信息?
- 查看标签的详细信息
git show v0.6
在之前所建立的标签都没有设置注释信息。
- 为标签添加时设置注释信息
git tag v0.7 7759687 -m "commit id 7759687"
二、加密
标签创建完之后如果开发者只希望自己能修改标签,那么就必须进行加密的处理,而可以使用GPG工具实现加密。
下载地址:
www.gnupg.org
,安装过程很简单,这里不细说。安装之后在命令行使用命令:gpg -help
进行验证。下面我们通过一个示例对此工具进行一个说明。生成自己的密钥
gpg --gen-key
这里询问我们使用什么样的加密算法,我们选择之前使用过的RSA算法,这也是默认的选择,我们直接回车。
这里询问我们密码长度,默认的长度为2048,这里我们选择默认,直接回车。
这里让我们选择密钥的有效日期,这里我们选择永不过期。输入0回车。之后再输入y表示确认。
让我们输入自己的个人信息。
其中
comment
表示一些注释信息,之后提示我们是否进行修改,这里信息我们已经确认过了,不需要修改,这里我们直接输入o回车。随后提示我们设置私钥的密码,为了防止有人恶意修改。我们还是输入之前的密钥
walp
。之后就会出现一些提示信息。
在这里面有几个重要的信息,密钥号:
5B24057A
。用户ID:yjaal (my gpg information) <yjjal1314@gmail.com>
(用户名 注释 邮箱)。
- 为了方便,最好还生成一张撤销的证书,为的是以后如果密钥过期,可以通过服务器进行撤销。
gpg --gen-revoke 5B24057A
这里提示是否进行撤销,输入y回车。
这里输入0回车。
然后输入我们之前设置的密钥。
此时会出现
自动生成了相关的密钥信息。
- 通过gpg工具列出所有的密钥
gpg --list-keys
- 实现文件的加密与解密处理
比如现在E:\github\LocalSource\gpgtest
下有一个Demo.txt
的文件:
Hello World!!!
为了传入的安全,我们在传输之前对其加密
gpg --recipient 5B24057A --output Demo.en.txt --encrypt Demo.txt
这里就在此目录中生成了一个
Demo.en.txt
的加密文件。这里的命令中5B24057A
是我们之前注册的用户的密钥号,我们给加密之后的文件名为Demo.en.txt
,--encrypt
指定要加密的文件。
- 对加密的文件进行解密
gpg --decrypt Demo.en.txt --output demo.de.txt
这里我们使用此命令不知道有什么问题,下面我们使用分布操作:
gpg Demo.en.txt
这里在中途可能会让我们输入密码信息,填入之后我们需要给解密后的文件起名,这里起名为
Demo.de.txt
。此时我们在此目录中就会多出这样一个文件,此文件的内容和之前的文件Demo.txt
的内容是一致的。这样就实现了一个解密操作。
三、使用GPG生成标签
现在我们已经生成好了一个密钥,名称是5B24057A
。标签的加密只需要增加一个-s
的参数。
- 使用GPG加密标签
git tag -s v0.9 -m "gpg handle tag" 418aba9
这里我们对最新的一个提交点生成标签,但是从提示信息来看并不能进行加密处理。我们需要在加密时使用一个指定的签名,所以实际上标签的加密处理应该这样做:
git tag -u "yjaal" -s v0.9 -m "gpg handle tag" d032312
命令中我们需要指定之前我们设置的用户,之后会提示我们输入密钥。注意:这里如果还出现错误,我们需要配置一个环境变量,在系统变量中点击新建:
之后点击确定,应该就可以了。
此时其他的开发者是不可能修改此标签的。查询此标签:
git show v0.9
四、标签管理
- 删除标签
git tag -d v1.0
这样的标签只是进行了本地的删除,我们也可以提交到服务器上去。
- 将标签推送到服务器上
git push origin v0.9
git push origin v0.7
完成之后我们进行查看
可以看到
2 releases
,进去但是这样一个一个的进行推送很麻烦,下面我们一次性推送多个标签到服务器:
git push origin --tags
- 删除某个标签
git tag -d v0.7
- 删除服务器上的标签
git push origin :refs/tags/v0.7
最后:这就是标签的基本操作,其实就是为提交点起了个别名,方便我们进行管理。