Git

Git学习笔记 08

标签管理和自定义Git

Posted by Huper on December 16, 2017

标签管理

分支管理学完后,剩下的东西就比较简单了,主要是标签管理和一些自定义功能。还有搭建Git服务器的相关内容,这个我暂时还用不到,就不打算学了,因此本篇可能是这个系列的最后一篇了。首先来介绍一下标签的概念,比如你的工作任务到达一个比较重要的阶段,你可以给这个版本库里的这个提交打上一个标签,便于以后查看。添加标签之前要返回需要打标签的分支,然后使用git tag <name>命令即可,还可以使用git tag命令查看标签:

$ git tag version1.0
$ git tag
version1.0

默认情况下是在当前分支版本库的HEAD也就是最近一次提交添加标签的,如果我们需要在之前的某个版本提交呢?可以使用git log查看提交记录找到对应的commit id就行了,当然也可使使用之前的HEAD^代指前一个版本的commit id

$ git tag version0.9 HEAD^
$ git tag
version0.9
version1.0

然后就可已使用如下命令很方便地查看到某个tag对应提交的详细信息:

$ git show version0.9
commit 1b1949d152d9644deb92c6a33b6201a248df5cce (tag: version0.9)
Merge: b1e11a6 4cbd89c
Author: ProHuper <871027967@qq.com>
Date:   Fri Dec 15 14:03:11 2017 +0800
    merge without fast-forword

可以看到这次提交应该是当时合并冲突之后的一次committag命令还可以添加一些参数:

$ git tag -a version0.8 -m "version 0.8 released" HEAD^^
$ git show  version0.8
tag version0.8
Tagger: ProHuper <871027967@qq.com>
Date:   Sat Dec 16 17:46:21 2017 +0800
version 0.8 released
commit b1e11a62fb76c3a331b5882049b56e218afd7e8a (tag: version0.8)
Author: ProHuper <871027967@qq.com>
Date:   Fri Dec 15 13:27:47 2017 +0800
    uodate

-a指定签名,-m添加备注,再次用show查看的话就会显示这两个信息。要删除标签的话:

$ git tag -d version0.8
Deleted tag 'version0.8' (was 15c10e3)

这个删除是本地操作,如果要向远程推送某个标签,可以使用push命令,由于标签中有分支信息,所以不用指定分支:

$ git push origin version1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:ProHuper/learngit.git
 * [new tag]         version1.0 -> version1.0
$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
To github.com:ProHuper/learngit.git
 * [new tag]         version0.9 -> version0.9

也可以使用git push origin --tags来推送给所有标签。想要删除远程标签的话和删除分支是差不多的,首先使用tag -d在本地删除,然后使用push origin :refs/tags/<tagname>命令删除远程标签就行了:

$ git tag -d version0.9
Deleted tag 'version0.9' (was 1b1949d)
$ git push origin  :refs/tags/version0.9
To github.com:ProHuper/learngit.git
 - [deleted]         version0.9

Git忽略文件

工作空间里的有些文件,你可能不想让它参与到版本库的管理中,比如一些编译产生的临时文件。这个时候可以在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。添加到。gitignore里的文件是不会参与git版本记录的,所以addstatus命令会忽视他们,但是也可以使用git add -f <file>强行添加文件。 可以用git check-ignore -v <file>命令来检查某个文件被.gitignore文件屏蔽的原因。

配置命令别名

可以使用git config命令来给某个命令配置别名,这样在使用的时候会方便很多,比如:

$ git config --global alias.st status
$ git config --global alias.last 'log -1'

之后使用git st就行了。如果需要配置有参数的命令的话,需要表示成字符串的形式。配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。命令配置信息会放在.git/config文件中,要删除别名,直接把对应的行删掉即可。当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:

$ cat ./.git/config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[remote "origin"]
        url = git@github.com:ProHuper/learngit.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[alias]
    last = log -1