yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install -y git
安装完成后,可经过 git --version
验证 git 安装是否成功php
git --version git version 1.8.3.1
为 Git 建立单独的系统用户组和用户,提升系统的安全性。git
# user-gourp 替换为您想建立的用户组,通常 git 便可 groupadd user-group
# username 替换为您的 Git 用户名 # user-gourp 替换为您建立 Git 用户组 adduser username -g user-gourp
# username 替换为您的 Git 用户名 passwd username Changing password for user username. New password: Retype new password: passwd: all authentication tokens updated successfully.
若是是正式服务器,为避免被攻击,密码强度请设置的强一点web
仓库能够建立在任意位置,若是系统盘紧张,能够建立在挂接盘或其余目录apache
本文以建立在 home 目录下为例安全
# 切换至 home 目录 cd /home # 建立 git_repository 目录 mkdir git_repository # 切换至 git_repository 目录 cd git_repository # 建立一个裸的 git 仓库 --bare 是表明建立裸仓库,这个参数必定记得带上 git init --bare demo.git # 把 demo.git 目录赋权给您建立的 Git 用户 # username 替换为您建立 Git 用户名 # user-gourp 替换为您建立 Git 用户组 chown -R username:user-group demo.git # 文件只有文件全部者或同在一个用户组下的用户可读,可写,可执行,其余用户只有读权限 chmod 774 -R demo.git
原理是建立收到提交请求时执行的脚本,这样当你在本地仓库执行git push后就会触发 post-receive 这个脚本。bash
# your-git-repository-path 替换为您 git_repository 路径 cd /your-git-repository-path/demo.git # 切换目录至 hooks cd hooks # 建立 post-receive vi post-receive
#!/bin/sh unset GIT_DIR # 您项目的工做目录 ProjectPath="/var/www/demo" # 定义日志目录 LogPath="/your-git-repository-path/project.git/hooks" # 输出日期到日志 echo -e "\n================= `date +"%Y-%m-%d %H:%M:%S"` ===============\n" >> $LogPath/auto-sync.log 2>&1 # 自动同步方法 # 1. 直接拉取并合并 git pull origin master >> $LogPath/auto-sync.log 2>&1 # 2. 拉取最新版本至本地,不自动合并 # git fetch --all # git reset --hard origin/master echo "====================================================== " >> $LogPath/auto-sync.log 2>&1
这里有2个问题未解决服务器
定义日志目录,若是定义 hooks 外层,则没法写入。赋权整了一整也没弄出来ssh
根据 服务器自动部署项目之GitHooks神器 所说,用 git fetch 而非 git pull 实现。 区别在于:curl
这里就有个问题,若是开发者在提交过程出现失误,使用git reset复位后,如今远端的代码版本低于web端的代码版本,再使用pull的时候就不能实现和开发者本地的代码的同步。因此这里使用fetch后,在强制使用reset实现web端的代码版本指针和git服务端的一致。(若是在本机可使用stash,而后pull,而后drop刚才stash的内容)工具
他这段话意思是明白了,可是没明白具体操做,望高手指点。
# username 替换为您建立 Git 用户名 # user-gourp 替换为您建立 Git 用户组 chown username:user-group post-receive chmod -R 774 post-receive
本文自动代码同步的语言为 php,其余语言类同,请本身切换服务器目录
# 切换至 apache 项目目录 cd /var/www # your-git-repository-path 替换为您 git_repository 路径 # project-name 切换为clone 后您须要的项目名称 git clone /your-git-repository-path/demo.git project-name # 赋权 # username 替换为您建立 Git 用户名 # user-gourp 替换为您建立 Git 用户组 # project-name 替换为clone 后的项目名称 # 赋权775 其余用户可读可执行,不然项目可能启动不了 chown -R username:user-group project-name chmod -R 775 project-name
各操做系统工具不一致,能够用工具,命令行同步到本地.
连接地址:
# username 替换为您建立 Git 用户名 # your-git-repository-path 替换为您 git_repository 路径 # server 能够是 IP,也能够是域名 # port 当您修改了端口时须要,未设置为空便可 ssh://username@server:port/your-git-repository-paht/demo.git
示例:
ssh://test@192.168.0.111/home/git_respository/demo.git
可用工具,也可命令提交代码自服务器,这里就很少说了
错误日志可查看 auto-sync.log
# your-git-repository-path 替换为您 git_repository 路径 cat /your-git-repository-paht/demo.git/hooks/auto-sync.log
广告栏: 欢迎关注个人 我的博客