搭建git服务器,代码直接从本地推到服务器

服务器端(linux):

1、安装git:sudo apt-get install git

2、创建一个git用户,用来运行git服务:sudo adduser git

3、创建证书登录:收集所有需要登录的用户(客户端用户)的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

创建客户端公钥SSH Key:在用户主目录下/c/users/用户名,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com",然后一路回车。id_rsa是私钥,id_rsa.pub是公钥。

4、初始化Git仓库:先选定一个目录作为Git仓库,假定是/www/sample.git,在/www目录下输入命令:sudo git init --bare sample.git。

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。

然后,把owner改为git:sudo chown -R git:git sample.git

5、禁用shell登录:出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash  => git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

6、客户端每次提交不能实时看到更新的代码,实现自动同步:

自动同步功能用到的是 git 的钩子功能,

服务器端:进入裸仓库:/www/sample.git

cd /www/sample.git

cd hooks

//这里我们创建post-receive文件

vim post-receive

//在该文件里输入以下内容

#!/bin/bash

git --work-tree=/www checkout-f

//保存退出后,将该文件用户及用户组都设置成git

chown git:git post-receive

//由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限

chmod +x post-receive

 

客户端(windows):

本地仓库准备工作:

1、创建客户端公钥SSH Key,把公钥写入到服务器端/home/git/.ssh/authorized_keys文件里,一行一个。

2、本地选择一个目录作为仓库:git init。

3、克隆远程仓库:git clone (linux用户名:git)@(服务器ip地址):/www/sample.git。

4、提交代码等:

git init

git add README.md (提交全部:git add .)

git commit -m 'first commit'

git remote add origin (服务器ip地址)

git push -u origin master

之后还无法在服务器看到提交的代码,需要更新仓库状态并检出更改(自动同步见服务器端第6步):

git update-server-info

git checkout -f (实际会报错,需要使用:git --work-tree=/www/sample.git/ checkout -f)。完成。

或:

     1. 通过 git clone 或 git pull 从 github 仓库上将代码获取到本地
     2. 将服务器添加到远程仓库列表,使用名字来区分不同的服务器,如测试服务器可以叫做testing
                git remote add testing ssh://git@服务器ip地址/www/sample.git
     3. 将本地代码提交到测试服务器上面
                git push testing master

 

参考来源:廖雪峰的官方网站-搭建git服务器:https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值