git客户端修改服务器地址,ubuntu安装设置git服务器和客户端

注意:需要在服务器端的git账户下,这样可避免clone或其他操作时使用sudo命令

cd ~/.ssh

chmod 777 ~/.ssh/authorized_keys

一、安装git服务器所需软件

打开终端输入以下命令:

ubuntu:~$ sudo apt-get install git-core openssh-server openssh-client

git-core是git核心软件

安装openssh-server和openssh-client是由于git需要通过ssh协议来在服务器与客户端之间传输文件

然后中间有个确认操作,输入Y后等待系统自动从镜像服务器中下载软件安装,安装完后会回到用户当前目录。如果

安装提示失败,可能是因为系统软件库的索引文件太旧了,先更新一下就可以了,更新命令如下:

ubuntu:~$ sudo apt-get update

更新完软件库索引后继续执行上面的安装命令即可。

安装的setuptools和gitosis,由于gitosis的安装需要依赖于的一些工具,所以我们需要先安装python

的setuptools。

执行下面的命令:

ubuntu:~$ sudo apt-get install python-setuptools

这个工具比较小,安装也比较快,接下来准备安装gitosis,安装gitosis之前需要初始化一下服务器的git用户信息,这个

随便填。

ubuntu:~$ git config --global user.name "myname"

ubuntu:~$ git config --global user.email "******@gmail.com"

初始化服务器用户信息后,就可以安装gitosis了,gitosis主要是用于给用户授权,设置权限也算是很方便的。

可以通过以下命令获取gitosis版本文件

ubuntu:~$ git clone

注意:中间有两个是数字零

获取gitosis文件后,进入到文件目录下面

ubuntu:/tmp$ cd gitosis/

接着使用python命令安装目录下的setup.py的python脚本进行安装

ubuntu:/tmp/gitosis$ sudo python setup.py install

到这里,整个安装步骤就完成了,下面就开始对git进行一些基本的配置。

二、创建git管理员账户、配置git

创建一个账户(git)作为git服务器的管理员,可以管理其他用户的项目权限。

ubuntu:/tmp/gitosis$ sudo useradd -m git

ubuntu:/tmp/gitosis$ sudo passwd git

然后再/home目录下创建一个项目仓库存储点,并设置只有git用户拥有所有权限,其他用户没有任何权限。

ubuntu:/tmp/gitosis$ sudo mkdir /home/gitrepository

ubuntu:/tmp/gitosis$ sudo chown git:git /home/gitrepository/

ubuntu:/tmp/gitosis$ sudo chmod 700 /home/gitrepository/

由于gitosis默认状态下会将仓库放在用户的repositories目录下,例如git用户的仓库地址默认在

/home/git/repositories/目录下,这里我们需要创建一个链接映射。让他指向我们前面创建的专门用于存放项目

的仓库目录/home/gitrepository。

ubuntu:/tmp/gitosis$ sudo ln -s /home/gitrepository /home/git/repositories

这里我将在服务器端生成ssh公钥,如果想在其他机器上管理也可以在其他机器上生成一个ssh的公钥。

ubuntu:/home/git$ ssh-keygen -t rsa

这里会提示输入密码,我们不输入直接回车即可。

然后用刚生成公钥id_rsa.pub来对gitosis进行初始化。

b850891b30f6bdd505a0935ca8e72949.png

出现如上信息说明gitosis已经初始化成功。

gitosis主要是通过gitosis-admin.git仓库来管理一些配置文件的,如用户权限的管理。这里我们需要对其中的一

个post-update文件添加可执行的权限。

ubuntu:/home/git$ sudo chmod 755 /home/gitrepository/gitosis-admin.git/hooks/post-update

三、服务器上创建项目仓库

使用git账户在服务器上创建一个目录(mytestproject.git)并初始化成git项目仓库。 这个名字可以取其他的,我只是用来做测试。

ubuntu:/home/git$ su git

$ cd /home/gitrepository/

$ mkdir gengzhitao  //可以为不同人创建不同目录,各自维护各自的目录。

$ cd gengzhitao

$ mkdir mytestproject.git

$ cd mytestproject.git

$ git init --bare

$ exit

如果出现以下信息就说明已经成功创建了一个名为mytestproject.git的项目仓库了,新建的这个仓库暂时还是空

的,不能被客户端clone,还需要对gitosis进行一些配置操作。

四、使用gitosis管理用户操作项目的权限

首先需要在客户端把在前面生成ssh公钥(用来初始化gitosis)的机器上的gitosis-admin.git的仓库clone下来。 (我是在服务器上管理gitosis)

在客户端机器上新建一个目录用于存放gitosis-admin.git仓库

ubuntu:~$ mkdir gitadmin

ubuntu:~$ cd gitadmin/

ubuntu:~/gitadmin$ sudo git clone git@192.168.1.106:repositories/gitosis-admin.git

注意:

1、192.168.1.106根据自己的服务器IP地址做修改。

2、需要加上sudo

3、需要加上repositories/

否则会提示:

Cloning into 'gitosis-admin'...

ERROR:gitosis.serve.main:Repository read access denied

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

and the repository exists.

clone正确会显示一下信息

190aae919013f9e521ca7440ded54efc.png

clone下来会有一个gitosis.conf的配置文件和一个keydir的目录。gitosis.conf用于配置用户的权限信息,

keydir主要用户存放ssh公钥文件(一般以“用户名.pub”命名,gitosis.conf配置文件中需使用相同用户名),用

于认证请求的客户端机器。

现在让需要授权的用户使用前面的方式各自在其自己的机器(客户端)上生成相应的ssh公钥文件,命令:ssh-keygen -t rsa,管理员把他们分别按用户名

命名好,复制到keydir目录下。

比如我的如下:

运行ssh-keygen -t rsa,会在~/.ssh目录下生成id_rsa.pub文件。通过命令:

cp /home/iking/.ssh/id_rsa.pub /home/iking/gitadmin/gitosis-admin/keydir/iking@ubuntu.pub,因为cat id_rsa.pub,最后就是iking@ubuntu,这个名字可以取其他的,后面会用到这个文件名,很重要。

继续编辑gitosis.conf文件

[gitosis]

[group gitosis-admin]####管理员组members = charn@ubuntu####管理员用户名,需要在keydir目录下找到相应的.pub文件,多个可用空格隔开(

下同)writable = gitosis-admin####可写的项目仓库名,多个可用空格隔开(下同)

[group testwrite]####可写权限组testwrite这个名字可以是其他的

members = iking@ubuntu####组用户writable = mytestproject####可写的项目仓库名

[group testread]####只读权限组members =lisi####组用户readonly= mytestproject####只读项目仓库名

因为这些配置的修改只是在本地修改的,还需要推送到服务器中才能生效。

ubuntu:~/gitadmin/gitosis-admin$ git add .

ubuntu:~/gitadmin/gitosis-admin$ git commit -am "add a user permission"

ubuntu:~/gitadmin/gitosis-admin$ sudo git push origin master

推送成功会显示下面提示信息

3e32707d1cf05b897762e6e12934cbc5.png

又是后新增的用户不能立即生效,这时候需要重新启动一下sshd服务

ubuntu:~/gitadmin/gitosis-admin$ sudo /etc/init.d/ssh restart

现在,服务端的git就已经安装和配置完成了,接下来就需要有权限的组成员在各自的机器上clone服务器上的相应

项目仓库进行相应的工作了。

可以在服务器中,/home/git/repositories/gitosis-admin.git,cat gitosis.conf查看是否更新,并查看/home/git/repositories/gitosis-admin.git/gitosis-export/keydir目录是否上传成功客户端的pub文件,我是是iking@ubuntu.pub

五、客户端(windows)使用git

下载安装windows版本的git客户端软件,下载地址:

安装完成后右键菜单会出现几个git相关的菜单选项,我们主要使用其中的git bash通过命令行来进行操作。

在本地新建一个目录,使用git初始化这个目录,然后再里面新建一个文本文件用于,最后关联到git服务器仓库

中的相关项目,最后上传本地版本到服务器。

ubuntu安装git客户端命令:sudo apt-get install git

$ mkdir testgit

$ cd testgit

$ git init

$ mkdir testdir

$ echo "this is a test text file,will push to server" > testdir/hello.txt

$ git add .

$ git commit -am "init a base version,add a first file for push to server"

$ git remote add origin git@192.168.1.106:repositories/gengzhitao/mytestproject.git  //testdir目录就会被更新到mytestproject.git  仓库中

$ sudo git push origin master

注意:

1、192.168.1.106为服务器IP地址,需根据自己情况做修改

2、必须加上路径repositories/gengzhitao/,可以根据情况,为不同人创建不同路径。可以为每个人创建一个目录,自己维护自己的目录。很方便。

3、git push origin master命令必须加上sudo。

否则会提示错误:

ERROR:gitosis.serve.main:Repository read access denied

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

或者:

fatal: 'gengzhitao/garage.git' does not appear to be a git repository

fatal: Could not read from remote repository.

Please make sure you have the correct access rights

and the repository exists.

and the repository exists.

这样服务端就创建好了一个mytestproject.git的仓库的基础版本了,现在其他组员只要从服务端进行clone就可以

了。

window下面进入到需要克隆的本地目录下面右键选择git bash选项,输入

sudo git clone git@192.168.1.106:repositories/gengzhitao/mytestproject.git

192.168.1.106为服务器IP地址,repositories/gengzhitao/为下载路径,sudo必须加上。

就可以把项目clone到本地仓库了。

下面进行简单的修改和提交操作

$ cd mytestproject

$ echo "this is another text file created by other" >another.txt

$ git add .

$ git commit -am "add a another file by other"

$ sudo git push origin master

最后推送到服务器成功会显示如下信息

33783542a379f6a4bd46553848dc63c4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值