搭建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://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文件夹下面都是你的工程文件啦

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文参考了菜鸟教程中的git服务器搭建和git远程仓库创建,文章流程简练可读性强,但仍有部分细节不清晰,导致操作失...
    24c41111e47b阅读 4,676评论 1 1
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 14,667评论 9 163
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,302评论 19 139
  • 01 见到小A的时候,她正躺在病床上,半边脸肿得老高,哭得红肿的双眼。“医生怎么说?” “没什么大问题,就是有轻微...
    妙所阅读 6,537评论 1 8
  • 望着车窗外, 菜地一块块。 花儿黄又黄, 江南真不赖。
    草原骑手阅读 1,652评论 0 0

友情链接更多精彩内容