1. 首先,先在服务器上安装git,如果有git的话就不用走这一步了

yum安装git

[root@iZuf6fazwjb6lb3z82smzoZ ~]# cd src/

[root@iZuf6fazwjb6lb3z82smzoZ src]# wget http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

[root@iZuf6fazwjb6lb3z82smzoZ src]# rpm -ivh epel-release-5-4.noarch.rpm

Preparing...                ########################################### [100%]

package epel-release-5-4.noarch is already installed

[root@iZuf6fazwjb6lb3z82smzoZ ~]# yum list

[root@iZuf6fazwjb6lb3z82smzoZ ~]# yum install -y git

  1. 创建一个用户来运行git服务
  2. .

[root@iZuf6fazwjb6lb3z82smzoZ ~]# adduser git //创建用户git

[root@iZuf6fazwjb6lb3z82smzoZ ~]# passwd git //设置用户git的密码

  1. 需要在你本地创建一个key公钥证书,说白了就是在本地弄个标识好让服务器知道是你推送过来
    打开本地git客户端界面
  2. .

$ ssh-keygen -t rsa //生成key证书公钥私钥
一路回车就ok了

$ cat .ssh/id_rsa.pub //打开公钥

类似图上这种
然后复制一下

在服务器操作命令

[root@iZuf6fazwjb6lb3z82smzoZ /]# su git       //切换git用户

[git@iZuf6fazwjb6lb3z82smzoZ /]$ cd home       //进去home(git用户的公钥存放)

[git@iZuf6fazwjb6lb3z82smzoZ home]$ cd git     //打开git文件夹

[git@iZuf6fazwjb6lb3z82smzoZ ~]$ cd .ssh       //打开公钥文件夹

[git@iZuf6fazwjb6lb3z82smzoZ .ssh]$ touch
authorized_keys   //创建公钥文件

[git@iZuf6fazwjb6lb3z82smzoZ .ssh]$ vim
authorized_keys     //将刚才复制的那一串公钥粘贴进去

如果没有.ssh文件
需要你在上一步生成秘钥和公钥

这样的话,如果是多人需要用到这个用户的话,就需要每个人把自己电脑上的公钥给管理员,然后管理员在服务器进行添加就可以,这样下次登录就不需要密码验证了,直接验证你电脑上的公钥即可.

后边会写到钩子自动同步更新,所以这里生成这个公钥,同样在服务器上也要生成一个然后放进.ssh里边的authorized_keys里边就好

[git@iZuf6fazwjb6lb3z82smzoZ
~]$ chomd 700 .ssh

[git@iZuf6fazwjb6lb3z82smzoZ
~]$ cd .ssh

[git@iZuf6fazwjb6lb3z82smzoZ
.ssh]$ chmod 600 authorized_keys

按照上边给予权限即可!
4.这一步特别重要,很多网友都会忽略,导致服务器上公钥没作用!
记得切换root用户,git没权限!

打开文件/etc/ssh/sshd_config

RSAAuthentication
yes            #开启RSA认证功能

PubkeyAuthentication
yes      #开启公匙认证

StricModes
no                          #据说不改会强制要求登录用户和文件拥有者用户相同

找到以上三个然后把注释去掉就ok
5.接下来,在服务器上初始化一个git仓库

[git@iZuf6fazwjb6lb3z82smzoZ
svnrepos]$ su root                                //切换root用户, 因为git没有任何权限

Password:

[root@iZuf6fazwjb6lb3z82smzoZ
svnrepos]# git init --bare hello.git             //在该目录初始化一个仓库,仓库名叫hello.git

Initialized empty
Git repository in /data/wwwroot/default/svnrepos/hello.git/  //你仓库的地址,记好了后边要要用到[root@iZuf6fazwjb6lb3z82smzoZ svnrepos]# cd hello.git/

[root@iZuf6fazwjb6lb3z82smzoZ
hello.git]# ls

branches 
config  description  HEAD  hooks  info  objects 
refs

5.完事后会创建一个裸仓库,这个仓库没有工作区,因为只是纯粹用来共享而已,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把git用户的权限设置为

[root@iZuf6fazwjb6lb3z82smzoZ
svnrepos]# chown -R git.git hello.git

[root@iZuf6fazwjb6lb3z82smzoZ
svnrepos]# ls -l

total 4

drwxr-xr-x 7 git
git 4096 Apr 13 10:39 hello.git

[root@iZuf6fazwjb6lb3z82smzoZ
svnrepos]#

6.权限给成功后,可以看出hello.git这个仓库git也有权限操作了.

这时候可以在本地创建个仓库了

HK04@HK04-PC
MINGW64 /d (master)

$ cd hello

HK04@HK04-PC
MINGW64 /d/hello (master)

$ git add 1.txt

HK04@HK04-PC
MINGW64 /d/hello (master)

$ git commit -m
"1.txt"

[master
(root-commit) 8d3e977] 1.txt

1 file changed, 1 insertion(+)

create mode 100644 hello/1.txt

好了,现在创建了一个1.txt文件.接下来,推送到服务器上的仓库

$ git remote add origin git@ip:/data/wwwroot/default/svnrepos/hello.git  //本地连接远程库

连接ok后可以通过 git remote -v 来查看 如果不对可以用 git remote rm origin 来删除
接下来推送到服务器的仓库

$ git push origin master //推送到远程仓库

ok 如果推送成功后 现在服务器仓库就有刚才所添加的文件了
但是.如果报错的话! 贴个类似的错误

如果是报这个错误,是因为你本地刚才创建的那个key公钥已经被匹配或者是没有该目录git用户没有权限.
可以把本地公钥删除了重新再生成或者是服务器仓库git用户的权限就可以!!

  1. 接下来,在服务器上将仓库的文件给克隆下来!

[git@iZuf6fazwjb6lb3z82smzoZ
svnrepos]$ git clone git@106.15.44.166:/data/wwwroot/default/svnrepos/hello.git
//克隆服务器仓库数据

克隆后,我们要用git 的钩子写个自动执行程序.

[git@iZuf6fazwjb6lb3z82smzoZ svnrepos]$
cd hello.git

[git@iZuf6fazwjb6lb3z82smzoZ hello.git]$
cd hooks

[git@iZuf6fazwjb6lb3z82smzoZ hooks]$touch
post-receive          //创建自动执行文件

[git@iZuf6fazwjb6lb3z82smzoZ hooks]$chmod
-R 777 post-receive   //给个权限

[git@iZuf6fazwjb6lb3z82smzoZ hooks]$vim
post-receive

  1. 打开后 写入下边这些自动执行命令

#!/bin/sh

export LANG=zh_CN.UTF-8

cd
/data/wwwroot/default/svnrepos/hello     
//这个是你每次要同步的文件夹

unset GIT_DIR                                //这个很重要! 很多同学没有写这个就同步不了,因为git执行自动脚本的时候有执行一些自定义变量,所以我们在这里unset一下

git pull origin ceshi                        //这个当然就是更新了 因为我创建了个ceshi的分支,这个可以更改为你们要同步的分支

本地git仓库推送到服务器自建的git仓库实现目录文件同步教程的更多相关文章

  1. (git fetch git push git pull)远程本地分支互相推送更新

    git push origin bug_huiyuan:mobile_attribution 把bug_huiyuan(本地分支) 推送到 远程mobile_attribution分支 git pus ...

  2. git将本地仓库推送到远程仓库

    如何将本地仓库推送到公司远程仓库? 1:前提是你本地安装好git.先把远程git仓库克隆到本地  git clone 远程仓库的地址(SSH) 2: git  branch //查看本地分支 3: g ...

  3. Github学习进阶-初露锋芒,通过命令行将本地git仓库推送到Github上面的仓库

    前提: 1. 需要安装git 客户端.  能打开 git  bash 命令行窗口. 2. 生成了ssh 秘钥,并添加到了Github上面. 一.在Github上面建立一个git仓库. 点击 + 号,在 ...

  4. Git总结笔记3-把本地仓库推送到github

    说明:此笔记在centos 7 上完成 1.配置公钥 [root@kangvcar ~]# ssh-keygen -t rsa -C "kangvcar@126.com" [roo ...

  5. 【原】本地仓库推送到远程仓库:fatal: refusing to merge unrelated histories

    最近,在操作git的时候,遇到各种问题,下面总结一下. 最开始,我不是先把远程仓库拉取到本地 ,而是直接在本地先创建一个仓库,再git remote add添加远程仓库. 当然,gitee官方还是有操 ...

  6. 本地仓库推送到远程仓库:fatal: refusing to merge unrelated histories

    最近,在操作git的时候,遇到各种问题,下面总结一下. 最开始,我不是先把远程仓库拉取到本地 ,而是直接在本地先创建一个仓库,再git remote add添加远程仓库. 当然,gitee官方还是有操 ...

  7. TortoiseGit学习系列之TortoiseGit基本操作将提交到本地的项目推送到在线仓库(图文详解)

    前面博客 TortoiseGit学习系列之TortoiseGit基本操作克隆项目(图文详解) TortoiseGit学习系列之TortoiseGit基本操作修改提交项目(图文详解) TortoiseG ...

  8. 12.Git分支-推送(push)、跟踪分支、拉取(pull)、删除远程分支

    1.推送 本地的分支并不会自动与远程仓库同步,你可以显示的向远程仓库推送你的分支.例如你在本地创建了一个dev分支,你想其他的人和你一样在dev之下进行工作,可以使用 git push <rem ...

  9. 将本地的代码推送到公网的github账号去

    将本地的代码推送到公网的github账号去 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近工作上需要用到github账号,拜读了一位叫廖雪峰的大神的文档,把git的前世今生说的 ...

随机推荐

  1. TAITherm — 专业热管理工具

    TAITherm 是美国ThermoAnalytics 公司开发的专业三维热仿真分析工具RadTherm 的升级产品,在继承RadTherm特征的基础上,开发了新型高效求解器Multigrid Sol ...

  2. Vue界面中关于APP端回调方法问题

    在混合开发中,HTML界面经常性的需要调用APP端提供的原生方法,而且在很多时候,APP端需要各种回调,如果将所有的回调方法写在内部,不是很方便,而且有些时候,APP端需要定义一些主动触发HTML界面 ...

  3. Robot Framework--接口实例一

    需求:api/car/detail/recommendcar.json   接口返回的车辆数量少于等于20且车辆不能重复 分析:统计接口中返回的列表的长度,再把carid拿出来组成一个新的列表,判断这 ...

  4. 22 webpack结合Vue使用的总结

    总结梳理:webpack中如何使用vue: 1.安装vue的包:cnpm i vue -S 2.由于 在webpack中,推荐使用 .vue这个组件模板文件定义组件, 所以,需要安装 能解析这种文件的 ...

  5. java中的AIO

    AIO(异步非阻塞)AIO采用了Proactor模式,AIO与NIO的不同之处在于当AIO在进行读写操作时,不用先等通知,可直接调用相应的read/write方法,这两种方法均为异步的,对于读操作而言 ...

  6. 使用jQuery快速高效制作网页交互特效---表单校验

    表单基本验证技术 为什么需要表单验证 减轻服务器的压力 保证输入的数据符合要求 常用的表单验证 1.日期格式 2.表单元素是否为空 3.用户名和密码 4.E-mail地址 5.身份证号码 表单选择器 ...

  7. 百度静态资源库CDN库, cdnjs库,引入JS

    不适用本地引入js文件,而使用其他服务器引入JS文件,1,减轻服务器压力2,速度快3,可以缓存 cdnjs库,更新比较快https://cdnjs.com/ cdn库 引入JS文件如:jquerybo ...

  8. RabbitMQ持久化和非持久化

    但是,非持久化要比持久化速度更快. 队列是否需要持久化:看需求

  9. RabbitMQ的5种模式

    队列截图,去rabbitMq.com去找学习文档 =========================================================================== ...

  10. 使用webuploader实现大文件断点续传

    IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...