搭建git环境

前言

整篇文章基本与网上很多教程一致,我根据我个人踩过的坑和理解在文中添加了一些注解。

环境

服务器

ubuntu16.04 pthon2.7 git2.7.4(ubuntu)

客户端

Windows10 git2.15.1.windows2

安装

服务器

安装git

sudo apt-get install git-core 

安装ssh,因为git使用ssh协议来传输

sudo apt-get openssh-server openssh-client

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

执行下面的命令:

sudo apt-get install python-setuptools

初始化一下服务器的git用户信息

git config --global user.name "myname"
git config --global user.email "******@gmail.com"

获取gitosis

git clone https://github.com/res0nat0r/gitosis.git

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

cd gitosis/

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

sudo python2 setup.py install

**注意,这里要使用python2.x来安装 **

到这里,整个安装步骤就完成了git 的环境,下面进行配置

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

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

这里的用户是ubuntu的用户,不是git的用户,创建完后可以使用“git”这个用户名登陆ubuntu系统了

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

ubuntu:/tmp/gitosis$ sudo mkdir /home/gitrepository
ubuntu:/tmp/gitosis$ sudo chown -R git:git /home/gitrepository/

你创建的git仓库都要使用上面语句进行授权,不然会报错

环境配置完毕,可以正常使用git了,这里还没有讲到免密登陆配置公钥私钥的问题,这里我感觉比较复杂,后面再讲,在现在的情况下,你仍可以通过输入git用户的密码来使用git,有点麻烦。

客户端

安装 Git-2.15.1.2-64-bit.exe
下载地址

安装完右键任意文件夹 看到 Git Gui Here 和 Git Bash Here说明安装成功了

使用git

创建服务器仓库

在服务器上创建一个git项目仓库(mytestproject.git),并授权

ubuntu:/home/git$ cd /home/gitrepository    
ubuntu:/home/git$ git init --bare mytestproject.git 
ubuntu:/home/git$ sudo chown -R git:git mytestproject.git 

PS:裸仓库的意思是这个仓库内,也就是mytestproject.git文件夹内不会有任何文件,不管你客户端提交了多少文件到这个仓库内,mytestproject.git 文件夹内都不会显示任何文件,这个裸仓库只会记录文件的信息,不会将文件信息以文件的方式存在这个目录下。而非裸仓库,就会讲仓库内记录的文件存储在文件目录内。

生成好仓库以后,就可以使用客户端访问了

客户端访问

clone生成同步文件夹方式

新建一个文件夹,用于存放同步的文件
在这个文件夹内右键,选择Git Bash Here
输入

git clone ssh://[email protected]:xxxx/home/gitrepository/mytestproject.git

注意:xx.xx.xx.xx 是你的服务器ip地址,

:XXXX冒号后面是你服务器ssh协议的端口号,默认是22,如果你是默认的,就可以不填

"git@"中的git是你在ubuntu下创建的用户的用户名,如果你不想使用git用户,那么你就要讲@前面的“git”换成你想要使用的用户名。

顺利的话,你就成功的同步成功啦

使用现有项目文件夹,同步

在现有文件夹下右键,选择Git Bash Here
输入

git init

设置远端地址

git remote add origion ssh://[email protected]:xxxx/home/gitrepository/mytestproject.git

然后你就可以将这个目录push到服务器上啦
当然,不要忘了先add再commit最后再push

git add -A #添加当前所有文件
git commit -m "init"
git push origin master

成功推到服务器了

定义自动同步文件夹

自动同步主要用到的是git的钩子功能(hook)
假定我们需要做到的是:服务器上的mytestproject.git仓库一接收到推送(push)
就立马同步到/home/mytest 文件夹中去

首先创建好mytest 文件夹

mkdir /home/mytest

然后赋予git用户操控它的权限

sudo chown -R git:git /home/mytest 

进入到mytestproject.git的钩子文件夹

cd /home/gitrepository/mytestproject.git/hooks

定义一个名为post-recive文件

vi post-receive

输入一下内容

#!/bin/bash
git --work-tree=/home/mytest checkout -f

尝试push一下仓库,你就会发现/home/mytest文件夹下面都是你的工程文件啦

你可能感兴趣的:(搭建git环境)