本地git仓库推送到服务器自建的git仓库实现目录文件同步教程
- 首先,先在服务器上安装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
- 创建一个用户来运行git服务
- .
[root@iZuf6fazwjb6lb3z82smzoZ ~]# adduser git //创建用户git
[root@iZuf6fazwjb6lb3z82smzoZ ~]# passwd git //设置用户git的密码
- 需要在你本地创建一个key公钥证书,说白了就是在本地弄个标识好让服务器知道是你推送过来
打开本地git客户端界面 - .
$ 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用户的权限就可以!!
- 接下来,在服务器上将仓库的文件给克隆下来!
[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
- 打开后 写入下边这些自动执行命令
#!/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仓库实现目录文件同步教程的更多相关文章
- (git fetch git push git pull)远程本地分支互相推送更新
git push origin bug_huiyuan:mobile_attribution 把bug_huiyuan(本地分支) 推送到 远程mobile_attribution分支 git pus ...
- git将本地仓库推送到远程仓库
如何将本地仓库推送到公司远程仓库? 1:前提是你本地安装好git.先把远程git仓库克隆到本地 git clone 远程仓库的地址(SSH) 2: git branch //查看本地分支 3: g ...
- Github学习进阶-初露锋芒,通过命令行将本地git仓库推送到Github上面的仓库
前提: 1. 需要安装git 客户端. 能打开 git bash 命令行窗口. 2. 生成了ssh 秘钥,并添加到了Github上面. 一.在Github上面建立一个git仓库. 点击 + 号,在 ...
- Git总结笔记3-把本地仓库推送到github
说明:此笔记在centos 7 上完成 1.配置公钥 [root@kangvcar ~]# ssh-keygen -t rsa -C "kangvcar@126.com" [roo ...
- 【原】本地仓库推送到远程仓库:fatal: refusing to merge unrelated histories
最近,在操作git的时候,遇到各种问题,下面总结一下. 最开始,我不是先把远程仓库拉取到本地 ,而是直接在本地先创建一个仓库,再git remote add添加远程仓库. 当然,gitee官方还是有操 ...
- 本地仓库推送到远程仓库:fatal: refusing to merge unrelated histories
最近,在操作git的时候,遇到各种问题,下面总结一下. 最开始,我不是先把远程仓库拉取到本地 ,而是直接在本地先创建一个仓库,再git remote add添加远程仓库. 当然,gitee官方还是有操 ...
- TortoiseGit学习系列之TortoiseGit基本操作将提交到本地的项目推送到在线仓库(图文详解)
前面博客 TortoiseGit学习系列之TortoiseGit基本操作克隆项目(图文详解) TortoiseGit学习系列之TortoiseGit基本操作修改提交项目(图文详解) TortoiseG ...
- 12.Git分支-推送(push)、跟踪分支、拉取(pull)、删除远程分支
1.推送 本地的分支并不会自动与远程仓库同步,你可以显示的向远程仓库推送你的分支.例如你在本地创建了一个dev分支,你想其他的人和你一样在dev之下进行工作,可以使用 git push <rem ...
- 将本地的代码推送到公网的github账号去
将本地的代码推送到公网的github账号去 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近工作上需要用到github账号,拜读了一位叫廖雪峰的大神的文档,把git的前世今生说的 ...
随机推荐
- 【数组模拟-小顶堆的插入构造/遍历】PAT-L2-012.-关于堆的判断--数组模拟
L2-012. 关于堆的判断 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x and y ar ...
- 《hello-world团队》第七次作业:团队项目设计完善&编码
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十一 团队作业7:团队项目设计完善&编码 团队名称 <hello--w ...
- HTML 003 元素
HTML 元素 HTML 文档由 HTML 元素定义. HTML 元素 开始标签 * 元素内容 结束标签 * <p> 这是一个段落 </p> <a href=" ...
- 前端开发规范:命名规范、HTML 规范、CSS 规范、JavaScript 规范
一个好的程序员肯定是要能书写可维护的代码,而不是一次性的代码,怎么能让团队当中其他人甚至一段时间时候你再看你某个时候写的代码也能看懂呢,这就需要规范你的代码了.我是有一点强迫症的人,上周我们后端给我了 ...
- PHP 调用 shell
可以使用的命令: popenfpassthrushell_execexecsystem 1.popen resource popen ( string command, string mode ) 打 ...
- Greenplum 监控segment是否正常
在greenplum运行过程中,Segement很有可能因为压力大出现不可用的情况, 主备Segement发现了切换,或是主备Segement网络断开,数据不同步了.在 默认情况下,如果GreenPl ...
- bzoj 4240: 有趣的家庭菜园 树状数组+贪心
有一个小性质:就是一个下标排列的最小移动次数就是逆序对数. 我们发现最终形态一定是一个波峰. 那么我们求的就是形成波峰的下标最少逆序对数. 考虑将元素从小到大依次插入. 那么,对于第 $i$ 个元素, ...
- 【HTTP】协议详解
什么是HTTP协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...
- URL中的String参数问题
测试一个查询数据的接口,类似这样的URL:.../search?type=Astring,在浏览器中输入URL获取到的数据为空,但通过其它方式确认数据库中确实已有数据,怀疑是接口实现问题.找接口实现的 ...
- [NOI2010]超级钢琴 倍增
[NOI2010]超级钢琴 倍增 题面 暴力:枚举区间丢入堆\(O(n^2logn)\) 正解:考虑每次枚举和弦起点\(s\),那么以\(s\)为起点的和弦为\(sum[t]-sum[s](s+L-1 ...