2024年3月7日发(作者:)
北大青鸟中关村
Git环境搭建(3)---测试
1、安装git客户端
访问git官网,下载安装包(许多Windows上的git服务都以msysgit作为支撑支撑软件,建议读者安装):
下载后按默认配置安装完毕,会出现命令行工具:1、接下来的pc端工作在命令行内完成:
测试能否ssh登录远程主机:
$ cd ~
$ sshgitadmin@host --远程登录
由于无法确认远程host主机的真实性,shell会告诉你它的公钥指纹让你确认,键入yes:
Are you sure you want to continue connecting (yes/no)? yes
输入远程主机gitadmin的密码,正常情况下这里就能够登录成功,显示gitadmin用户
$ exit --退出远程登录
配置免密码登陆:
北大青鸟中关村
$ ssh-keygen -t rsa --生成本机密钥,公钥默认在~/.ssh/id_
未使用gitosis情况下执行:
$ ssh-copy-id gitadmin@host --上传公钥,远程主机host为服务器IP
使用gitosis管理公钥则执行:
$ scp ~/.ssh/id_ gitadmin@host:/tmp --远程拷贝公钥至服务器临时目录
2、可视化工具
在安装官方git的同时,它也给我们提供了gitk和git-gui两种可视化工具:
gitk是一个历史记录的图形化查看器。
cd 到一个Git仓库,然后键入:
$ gitk [git log options]
git-gui则主要是一个用来制作提交的工具:
$ gitgui
注意:
本部分末参考链接里有官网推荐的Git图形化客户端(github上还有更多选择),更亲近不熟悉命令行的使用者。由于这一部分的选择较多,但究其实现原理还是一样的,所以这里就不做延伸。请使用者参考本文或搜索自行选择的客户端相应教程进行配置。
Ubuntu服务器端下:
1、管理gitosis:
$ cd ~
北大青鸟中关村
$ git clone gitadmin@host:/home/gitadmin/
$ cd gitosis-admin/
接下来各个用户按照前面安装配置gitosis时提到的办法生成各自的ssh公钥文件后,scp上传到服务器/tmp目录下,也可由服务器管理员手动取得,并最终重命名为各用户名后拷贝到keydir目录下,就能实现使用git协同作业了。
2、文件讲解:
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = a@server1
[group developers]
writable = helloworld
members = a@server1 b@server2
[group test]
readonly = helloworld
members = c@server3
这个配置文件表达了如下含义:gitosis-admin组成员有a,该组对gitosis-admin仓库有读写权限; developers组有a,b两个成员,该组对helloworld仓库有读写权限; test 组有c一个成员,对helloworld仓库有只读权限。当然目前这些配置文件的修改只是在你的本地,你必须推送到gitserver上才能真正生效。
北大青鸟中关村
操作方法:
加入新文件、提交并推送到git服务器:
$ git add . --添加命令,这里的点’.’表示当前目录
$ git commit -am "add helloworld project and users" --提交,并描述此次行为
$ git remote add origin ssh://gitadmin@host:
添加远程主机
$ git push origin master --推送到服务器master分支
这里介绍远程主机URL修改方法,需要进到待修改仓库目录下:
方法一:先删除$ git remote rm origin 再添加$ git remote add origin
URL
方法二:$ git remote set-url origin URL
方法三:进入.git目录下修改config文件
3、演示操作
现在我们来添加一个新项目。为此我们要建立一个名为mobile的新段落,在其中罗列手机开发团队的开发者,以及他们拥有写权限的项目。由于 'gitadmin' 是系统中的唯一用户,我们把他设为唯一用户,并允许他读写名为iphone_project的新项目:
[group mobile]
members = gitadmin
writable = iphone_project
修改完之后,提交gitosis-admin 里的改动,并推送到服务器使其生
北大青鸟中关村
效:
选择目录创建裸仓(本步骤可省略,我们不用事先到服务器上手工创建该项目的裸仓库,Gitosis会在第一次遇到推送时自动创建):
$ mkdiriphone_
$ sudogitinit --bare iphone_
$ sudochown -R gitadmin:gitadminiphone_
添加新工程并提交用户组:
$ git commit -am 'add iphone_project and mobile group'
在新工程iphone_project首次推送数据到服务器前,得先设定该服务器地址为远程仓库,注意使用gitosis可以不用指明完整路径,只需要一个冒号加项目名字即可,Gitosis会自动帮你映射到实际位置:
$ git remote add origin gitadmin@host:iphone_
推送到服务器:
$ git push origin master
要和朋友们在一个项目上协同工作,就得重新添加他们的公钥。不过这次不用在服务器上一个一个手工添加到 ~/.ssh/authorized_keys文件末端,而只需管理keydir目录中的公钥文件(文件的命名由中用户的标识名决定),并修改,最后用前面的方法推送到服务器配置生效。
现在我们为 John,Josie 和 Jessica 添加公钥:
$ cp /tmp/id_ keydir/
$ cp /tmp/id_ keydir/
北大青鸟中关村
$ cp /tmp/id_ keydir/
然后把他们都加进 'mobile' 团队,让他们对iphone_project具有读写权限:
[group mobile]
members = scott john josiejessica
writable = iphone_project
如果你提交并推送这个修改,四个用户将同时具有该项目的读写权限。
Gitosis也具有简单的访问控制功能。如果想让John只有读权限,可以这样做:
[group mobile]
members = scottjosiejessica
writable = iphone_project
[group mobile_readonly]
members = john
readonly = iphone_project
现在 John 可以克隆和获取更新,但Gitosis不会允许他向项目推送任何内容。像这样的组可以随意创建,多少不限,每个都可以包含若干不同的用户和项目。甚至还可以指定某个组为成员之一(在组名前加上 @前缀),自动继承该组的成员:
[group mobile_committers]
members = scottjosiejessica
[group mobile]
北大青鸟中关村
members = @mobile_committers
writable = iphone_project
[group mobile_another]
members = @mobile_committers john
writable = another_iphone_project
如果遇到意外问题,试试看把loglevel=DEBUG 加到 [gitosis] 的段落,即把日志设置为调试级别,记录更详细的运行信息。如果一不小心搞错了配置,失去了推送权限,也可以手工修改服务器上的
/home/git/.文件,因为Gitosis实际是从该文件读取信息的。它在得到推送数据时,会把新的存到该路径上。所以如果你手工编辑该文件的话,它会一直保持到下次向gitosis-admin 推送新版本的配置内容为止。


发布评论