GIT自动更新操作说明

一、安装GIT

1、下载GIT源码并安装:

$ git --version  #先查看GIT是否已经安装,已经安装则不需要重新安装

$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

$ wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz   或者  wget https://www.kernel.org/pub/software/scm/git/git-1.9.0.tar.gz tar

$ tar zxvf git-1.9.0.tar.gz

$ cd git-1.9.0

$ make prefix=/usr/local/git all

$ make prefix=/usr/local/git install #root用户运行

如果编译时提示错误:
LINK git-credential-store
libgit.a(utf8.o): In function `reencode_string_iconv’:
/opt/git-master/utf8.c:530: undefined reference to `libiconv’
libgit.a(utf8.o): In function `reencode_string_len’:
/opt/git-master/utf8.c:569: undefined reference to `libiconv_open’
/opt/git-master/utf8.c:588: undefined reference to `libiconv_close’
/opt/git-master/utf8.c:582: undefined reference to `libiconv_open’
collect2: ld 返回 1
make: *** [git-credential-store] 错误 1

$ cd /usr/local/src/

$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

$ tar -zxvf libiconv-1.14.tar.gz

$ cd libiconv-1.14

$ ./configure --prefix=/usr/local/libiconv && make && make install

重新安装GIT

$ cd /usr/local/src/git-1.9.0

$ ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv

$ make

$ make install

2、安装完成,查看GIT的版本

$ /usr/local/git/bin/git --versiongit version 1.9.0

把GIT命令添加到全局变量中

$ vi /etc/profile在最后添加 export PATH=$PATH:/usr/local/git/bin

$ source /etc/profile  #修改使其生效

查看GIT版本

$ git --versiongit version 1.9.0

OK,GIT软件安装成功。

二、安装Gitolite

1、添加git用户

$ useradd git

$ passwd git

2、切换用户并生成密钥

$ su git

$ ssh-keygen -t rsa

一路按回车即可

3、下载并安装Gitolite

$ git clone http://github.com/sitaramc/gitolite.git

$ cd gitolite

$ pwd

/home/git/gitolite

$ ./install

use the following full path for gitolite:
    /home/gitadmin/gitolite/src/gitolite

$ /home/gitadmin/gitolite/src/gitolite

$ /home/gitadmin/gitolite/src/gitolite setup

出错:

Initialized empty Git repository in /home/gitadmin/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/gitadmin/repositories/testing.git/
WARNING: /home/gitadmin/.ssh/authorized_keys missing; creating a new one

解决

$ cd src

$ ./gitolite setup -pk /home/git/.ssh/id_rsa.pub

Initialized empty Git repository in /home/gitadmin/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/gitadmin/repositories/testing.git/
WARNING: /home/gitadmin/.ssh/authorized_keys missing; creating a new one

表示安装成功,并且初始化了基本git库

4、增加用户与版本库

$ git config –global user.name “yourname”

$ git config –global user.email “[email protected]”

$ cd ~

$ git clone [email protected]:gitolite-admin

$ cd gitolite-admin

进入 gitolite-admin 目录,其中的 keydir 目录是用来放置用户公钥的,而 conf/gitolite.conf 则是用来配置用户和版本库

编辑 $vi conf/gitolite.conf配置成如下:

@web_rw           = lisi
@web_r            = zhangsan

repo gitolite-admin

RW+      =   id_rsa

#repo testing

#RW+     =   @all

repo webapp

RW+      = @web_rw

RW       = @web_rw

R        = @web_r

其中所有用户名的公钥文件应该放在keydir文件夹下面

5、使修改的配置文件生效

$ git add .

$ git commit -am “add web repo”

$ git push

OK,配置文件生效,也会生成了线上webapp空的GIT库

GIT地址为:[email protected]:webapp.git

三、设置GIT钩子自动更新代码

$ cd /home/www/php/web.com  #当前是在git用户下操作

$ git clone [email protected]:webapp.git  #拉取GIT库代码

$ cd ~

$ cd /home/git/repositories/webapp.git/hooks

$ cp post-update.sample post-update #添加GITa添加钩子文件

$ vim post-update  #编辑如下,保存退出

#!/bin/sh

#

# An example hook script to prepare a packed repository for use over

# dumb transports.

#

# To enable this hook, rename this file to "post-update".

unset $(git rev-parse --local-env-vars)

cd /home/www/php/web.com/webapp

sudo /usr/local/bin/git pull

sudo chown -R www:www .

注释:post-update这个脚本在提交文件到git仓库时,会运行文件内的代码,所以通过这样的方法,我们在客户端push提交代码后,就能自动更新网站的文件了。

$ su root

$ vi /etc/sudoers

1、注释掉:

#Defaults    requiretty

解决错误:sudo:抱歉,您必须拥有一个终端来执行 sudo

2、配置git拥有超级权限执行chown命令,同时设置sudo不用输入密码的方法

root    ALL=(ALL)       ALL

git     ALL=(ALL) NOPASSWD: NOPASSWD: ALL   #添加左配置

四、使用TortoiseGit推送线上代码操作说明

1、在本地开发环境新增一个与线上代码同步的GIT库:web_online,对应地址为[email protected]:web_online.git,并设置好权限,只能管理员读写。

2、web_online克隆与主库web相同的代码。

3、修改web_online配置文件与线上的一致,并提交。

4、然后把web_online代码推送到线上的代码库,即[email protected]:webapp.git

5、根据代码对应位置设置好虚拟主机或者通过软链接来设置。

五、关于公钥私钥配置的操作说明

1、在linux下,用户默认公钥和私钥的位置

/用户目录/.ssh/id_rsa       #用户的私钥

/用户目录/.ssh/id_rsa.pub   #用户的公钥

2、生成其他用户公钥密钥

$ ssh-keygen -t rsa   #下一步输入公钥密钥的名称,例如zhangsan,往下全部按Enter键

3、设置会话管理配置

$ vi  /用户目录/.ssh/config 配置成如下:

Host 192.168.0.111   ##别名,可以随意命名,链接时使用这个名字

HostName 192.168.0.111    ##主机名

User zhangsan             ##用户名

Port 22                   ##端口

IdentityFile ~/.ssh/zhangsan  ##密钥文件的路径

4、把公钥文件放置到gitolite服务端的keydir文件下,然后使修改添加的配置文件生效即可 (查看上面安装Gitolite第5点说明)

时间: 2024-11-12 22:11:31

GIT自动更新操作说明的相关文章

git 本地提交后如果让服务器上的GIT 自动更新拉取

Q: 最近配了个服务器,用的GIT,本地提交后服务器必须再拉取一下才能更新出来..求个提交后自动更新的方法 A: 最佳工具 git hook post-update.sample 改名为post-update 然后加几行简单的代码就能实现你的需求了 例: gitdir=/**** cd $gitdir git checkout 对应分支 git pull end... ------------------------------------- 最简单的办法就是服务器上用一个cron任务,定时拉取

git自动更新网站代码

1.实现过程在linux上安装git服务.创建源版本库.从源版本库克隆得到网站目录,然后利用git中的hooks机制,在git push推送代码到源版本库的时候,触发编写的shell脚本,更新网站目录下的代码. 2.安装git服务 [[email protected] ~]# cd /usr/local/src[[email protected] src]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.15.2.

通过Git WebHooks+脚本实现自动更新发布代码

需求: 写一个自动化部署脚本,能根据git push动作自动更新发布代码(补丁文件(或更新文件,以下简称补丁)) 解决方案: 通过git webhooks.python脚本.Linux Shell脚本完成,所有动作均自动完成,人工部分仅限于发布补丁文件之前 git webhooks实现触发执行脚本 python脚本用于接收git webhooks的post数据并根据这些数据判断是否执行shell脚本 Linux Shell脚本用于实现部署.备份.回滚等操作 具体步骤(方案实现): 实现原理: 用

通过Git WebHooks+脚本实现自动更新发布代码之shell脚本

前文讲述了<通过Git WebHooks+脚本实现自动更新发布代码>,里面提供了一种自动更新发布代码的脚本编写思路.本文的脚本与前文中的思路不太不同.本脚本以capistrano中的一些思想和理念为依据,用简单好理解的shell脚本实现capistrano原本实现的自动化部署部分. 脚本的一些特点和功能: 解决脚本的符号链接问题,准确获取脚本工作目录(从tomcat脚本中学到): 颜色显示,不同级别的信息用不同的颜色显示(共两种方案,前一种从一位不知名的国外工程师处得到,后一种从lnmp1.2

通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)

依据前文<通过Git WebHooks+脚本实现自动更新发布代码>的解决方案编写的shell脚本,此脚本专门用于更新补丁文件,例如对项目中的文件实现增(add).删(remove).改(update),并且执行相关的命令,如清除缓存.重启服务等. 此Shell脚本目前设计成在本地执行,目前不适合分布式执行的情况.也就是说,此脚本最好与项目在同一个机器上,这个缺陷已经标注在脚本中了,参见脚本中的多个TODO. 脚本完成的工作: 检查配置文件合规性 备份与恢复 增删改文件 执行命令 失败回滚 除上

git push之后服务器如何自动更新?

在我们开发的过程中,我的开发流程一般都是 说明 本地 -> git push -> 服务器 -> git pull -> npm i -> yarn build 那么我们能不能去监听 git push 呢? 如果我们每次push之后,服务器可以自动的去执行上面的后面的命令岂不是很好 第一种方式 使用 travis-ci.org -> 官网 他的作用就是我们每次push之后,可以帮我们运行一遍,保证代码成功 build status 但是如果travis需要操作服务器的话

nvidia驱动自动更新版本后问题解决 -- failed to initialize nvml: driver/library version mismatch

因为必须关闭桌面窗口, 建议另外一台电脑ssh连接操作 1. 卸载旧版本并关闭图形界面 sudo apt-get remove --purge nvidia-\* sudo service lightdm stop sudo init 3 2. 安装对应版本号驱动 sudo chmod +x cuda_8.0.61_375.26_linux.run sudo sh cuda_8.0.61_375.26_linux.run --tmpdir=/tmp --override 3. 安装cudnn5.

vue 项目使用局域网多端访问并实时自动更新(利用 browser-sync)

在写vue的项目中时,虽然vue会自动更新页面,但是切换页面切来切去也很麻烦,有时候我们还要在公司另一台电脑或者手机上调试,这时候利用browser-sync插件,无需改动vue的代码即可实现: 1. 首先确保安装了node (命令行node -v 可以查看) 2.全局安装 browser-sync      npm install -g browser-sync (项目中局部安装  npm install --save-dev browser-sync) 3.启动vue项目 npm run d

带你入门SpringCloud 之 通过SpringCloud Bus 自动更新配置

前言 在<带你入门SpringCloud统一配置 | SpringCloud Config>中通过 SpringCloud Config 完成了统一配置基础环境搭建,但是并没有实现配置修改自动更新的操作(GitHub 或Gitee 修改配置后,需要重启配置服务才能更新配置). 本文是<带你入门SpringCloud统一配置 | SpringCloud Config>的续篇,通过 SpringCloud Bus 完成配置修改自动更新的操作介绍. 阅读本文前需要你先移步<带你入门