标签管理
分支管理学完后,剩下的东西就比较简单了,主要是标签管理和一些自定义功能。还有搭建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
可以看到这次提交应该是当时合并冲突之后的一次commit
。tag
命令还可以添加一些参数:
$ 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版本记录的,所以add
和status
命令会忽视他们,但是也可以使用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