git与github——3,标签管理、git自定义、搭建git服务器

一、标签管理

发布一个版本时,我们通常要在版本库上打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。git有commit id 为什么还要tag?因为commit id是一串16进制表示的东西,看不懂!

1,创建标签

git tag v.. 创建标签:

git tag v1.0

打完标签后查看所有标签:

git tag

默认标签是打在最新提交的commit上的,如果要给历史的commit打标签要怎么做?先找到历史提交的commit id 然后打标签:

git log --pretty=oneline --abbrev-commit

然后根据commit id打标签:

git tag v0.5 ac67f0

再用git tag查看一下:

另外,标签不是按时间顺序来的,而是按字符顺序来的。用git show v0.5可以查看标签信息:

也可以创建带有说明的tag

$ git tag -a v0.1 -m "version 0.1 released" ec12b05

git show里就可以看到这段说明了!

2,操作标签

删除标签:

 git tag -d v0.5

如果要推送某个标签到远程,使用命令git push origin <tagname>

git push origin v1.0

看下github,这样就有v1.0了:

如果我们要删除这个标签,要怎么做?

git push origin :refs/tags/v1.0

接没有这个tag了

如果要推送本地的全部tag:

git push origin --tags

这样就push了全部tag了。

如果要给github上的官方提意见,可以用pull request

使用GitHub时,国内的用户经常遇到的问题是访问速度太慢,有时候还会出现无法连接的情况!

如果想体验github飞一般的速度,可以用国内的git托管服务——码云!码云的操作方式和github基本一样。

二、git的自定义配置

git有很多自定义配置项,比如

git config --global color.ui true

设置显示颜色,当然我的git bash是默认显示的。

1,忽略特殊文件

每次git status都会显示Untracked files ...这部分的设置可以在.gitignore文件中进行设置,然后把要忽略的文件放进去。当然不用全部自己写咯,通过https://github.com/github/gitignore 这个网址的相关文件可以进行设置的。

2,配置别名、文件

比如用st 代替status:

$ git config --global alias.st status

这样就可以把一大堆的参数的命令进行简写。

配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。

配置文件放哪了,要查看配置文件:

cat .git/config

配置错了别名也可以在这里删除。

三、搭建git服务器

github是个开源的代码托管服务,如果涉及敏感信息,或者不想让别人看到公司项目的代码,就需要建一个私有的git服务啦。

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git

$ sudo apt-get install git

第二步,创建一个git用户,用来运行git服务:

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git

$ sudo chown -R git:git sample.git

第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

剩下的推送就简单了。

管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

管理权限

有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。

这里我们也不介绍Gitolite了,不要把有限的生命浪费到权限斗争中。

 

 

 

 

 

参考:廖雪峰博客https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000

猜你喜欢

转载自blog.csdn.net/qq_22059611/article/details/83240866
今日推荐