本地git仓库推送到服务器自建的git仓库实现目录文件同步教程[自整理]
来源:互联网 发布:淘宝网雅迪电动车价格 编辑:程序博客网 时间:2024/06/05 18:21
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.rpmPreparing... ########################################### [100%] package epel-release-5-4.noarch is already installed[root@iZuf6fazwjb6lb3z82smzoZ ~]# yum list[root@iZuf6fazwjb6lb3z82smzoZ ~]# yum install -y git2.创建一个用户来运行git服务
[root@iZuf6fazwjb6lb3z82smzoZ ~]# adduser git //创建用户git[root@iZuf6fazwjb6lb3z82smzoZ ~]# passwd git //设置用户git的密码3.需要在你本地创建一个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_configRSAAuthentication 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.gitInitialized empty Git repository in /data/wwwroot/default/svnrepos/hello.git/ //你仓库的地址,记好了后边要要用到[root@iZuf6fazwjb6lb3z82smzoZ svnrepos]# cd hello.git/[root@iZuf6fazwjb6lb3z82smzoZ hello.git]# lsbranches config description HEAD hooks info objects refs5.完事后会创建一个裸仓库,这个仓库没有工作区,因为只是纯粹用来共享而已,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把git用户的权限设置为
[root@iZuf6fazwjb6lb3z82smzoZ svnrepos]# chown -R git.git hello.git[root@iZuf6fazwjb6lb3z82smzoZ svnrepos]# ls -ltotal 4drwxr-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 helloHK04@HK04-PC MINGW64 /d/hello (master)$ git add 1.txtHK04@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用户的权限就可以!!
6.接下来,在服务器上将仓库的文件给克隆下来!
[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-receive7.打开后 写入下边这些自动执行命令
#!/bin/sh export LANG=zh_CN.UTF-8cd /data/wwwroot/default/svnrepos/hello //这个是你每次要同步的文件夹unset GIT_DIR //这个很重要! 很多同学没有写这个就同步不了,因为git执行自动脚本的时候有执行一些自定义变量,所以我们在这里unset一下git pull origin ceshi //这个当然就是更新了 因为我创建了个ceshi的分支,这个可以更改为你们要同步的分支写完保存退出!
到这里基本都可以实现同步了,在本地客户端推送一个上去然后查看服务器有没有同步就可以了!
如果没有的话就是你这中间出了什么问题了配置错误了,改一下就ok! 感谢大家评论指出问题 谢谢 ~
4 1
- 本地git仓库推送到服务器自建的git仓库实现目录文件同步教程[自整理]
- 在自建的git服务器新建仓库
- 远程服务器git仓库的搭建以及本地git库的首次推送首次克隆远程仓库的文件
- 本地Git仓库同步到Bitbucket 远程Git仓库
- git本地建立仓库推送到远程
- git将本地仓库推送到github
- Git 推送本地仓库到GitHub
- git创建本地仓库到推送gitlab
- 本地项目推送到git远程仓库
- Git使用手册:git push 推送提交本地仓库代码文件到远程仓库
- 将本地创建的git仓库推送到指定地址
- git把本地仓库推送到新仓库
- git 将本地仓库推送到github仓库
- 将git本地仓库推送到远程仓库
- 本地git仓库同步到github远程仓库
- 本地git仓库推送相关
- git实现github仓库和本地仓库同步
- Git-最简单的本地项目变成版本仓库,然后把内容推送到GitHub仓库
- 什么是游标
- ubuntu python3.5配置MySQL
- jdk8新特性之流
- SSH框架
- 利用存储过程将Excel中数据导入到数据库表中
- 本地git仓库推送到服务器自建的git仓库实现目录文件同步教程[自整理]
- tomcat命令
- JSP中循环二维数组 + 循环Map
- vultr升降级:老5美元降级到2.5美元VPS套餐教程
- LeetCode笔记:524. Longest Word in Dictionary through Deleting
- 遍历Map的方式总结
- sdn
- Linux ubuntu 基础操作(4)
- dubbo+zoopeeper例子