日常

使用自己的服务器来搭建git仓库

平常自己会随便写一些乱七八糟的东西,。。这些代码总要有个地方存放,或者当个网盘用也是不错的选择。所以在自己服务器上搭建一个git仓库,那么下面开始吧~

服务器端配置

首先第一步,要确保服务器上有git

1、安装:yum -y install git

2、查看是否安装成功 git –version

 

第二步,为git创建账户

adduser git

passed git  

这一步会为git创建密码,连续两次输入一样的就可以

创建完成后可以输入以下命令查看是否成功 ,有git代表成功

cd /home && ls -al   

 

接着我们来准备创建一个测试用的代码仓

切换到git账户

su git

进入到git账户的家目录

cd /home/git

创建一个文件夹用作仓库,这里起名为 hello

mkdir hello.git

cd hello.git

在目录下初始化,切记要加上 –bare参数,否则后续push后不回自动更新文件

git –bare init

至此,我们创建了一个裸仓库,会自动生成一些文件,但是现在还不能执行任何git操作,否则会有很多莫名其妙的错误,稍后我们再来解决,现在先继续配置我们的git账户。

给git账户配置免密登陆,否则后续每次提交都要输入密码,进入git账户的主目录

cd /home/git

创建ssh的配置 (.点代表这是一个隐藏的文件夹ls是看不到的,需要加参数 -a)

mkdir .shh

cd .ssh

创建authorized_keys文件,存放客户端远程访问的ssh公钥

touch authorized_keys

设置权限

chmod 700 /home/git/.ssh

chmod 600 /home/git/.ssh/authorized_keys

配置一下本地账户,这里的用户名和邮箱自己随意设置

git config –global user.name “hello”

git config –global user.email “hello@mail.com”

接下里配置git服务自动更新

在仓库目录下进入hooks目录

cd /home/git/hello.git/hooks

可以看到都一些.sample以文件,我们把后缀全部取消

接着创建一个post-receive文件

touch post-receive

chmod 775 post-receive

编辑文件

vim post-receive

写入一下内容

git –work-tree=/home/git/Code/StoryLine –git-dir=/home/git/StoryLine.git checkout -f

–work-tree为项目目录,push后文件会存放在这里,–git-dir为仓库目录,此目录下仅存放版本信息

 

禁用git账户shell命令权限,现在的git账户是可以执行各种命令的,不符合权限最小化原则,哈哈

切换到git账户,创建目录

su git

mkdir /home/git/git-shell-commands

切换的root修改git登陆方式

su root

vim /etc/passwd

按i进入编辑模式,将光标防治到这一行尾,1003数字每个机器都不同

git:x:1003:1003::/home/git:/bin/bash

改为git:x:1003:1003::/home/git:/bin/git-shell

然后保存退出,至此服务端暂时配置完成。

客户端配置,以下是mac终端方式操作

创建本地文件夹

mkdir hello

cd hello

配置用户名和邮箱

git config –global user.name “user”

git config –global user.email “user@mail.com”

创建shh keys, 不用输入任何东西,直接回车三连

 

 

把生成的id_rsa.pub文件上传到服务器/home/git/.ssh下

在服务器端,把id_rsa.pub内容追加到authorizes_keys下

cat id_rsa.pub >> authorizes_keys

开始克隆仓库

git clone git@www.duloveni.com:/home/git/hello.git

可以看到,文件已经克隆了下来

我们创建一个文件test.txt并写入hello,然后执行git status可以看到检测到了文件变动

git add -A

git commit -m “mes”

git push origin master

留言

您的电子邮箱地址不会被公开。