前言
整篇文章基本与网上很多教程一致,我根据我个人踩过的坑和理解在文中添加了一些注解。
环境
服务器
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://git@xx.xx.xx.xx: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://git@xx.xx.xx.xx: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文件夹下面都是你的工程文件啦