git远程部署

一、配置远程主机

在centos用户的家目录(即/home/centos/)下初始化一个空的Git仓库:

git init --bare swaggers.git

编写hook脚本

cd swaggers.git/hooks
vim post-receive
#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd /data/web/src/swaggers/
sudo git pull
(切记将post-receive脚本权限修改为可执行文件,777即可)

二、本地配置ssh

本地配置ssh(否则可能无法提交至远程主机)生成公钥私钥文件

ssh-keygen -t rsa -C "username"

将本地C:\Users\user.ssh\id_rsa.pub公钥文件内容复制至远程主机/home/centos/.ssh/authorized_keys文件中(不同用户的公钥文件换行保存)

将分支推送至远程主机:

git remote add giturl                               #   添加远程主机     
如 git remote add swaggers [email protected]:/home/centos/swaggers.git

git push [] [][:]  #推送代码,host默认为origin,localbranch默认为当前分支,remotebranch默认为当前分支追踪的分支,当remotebranch不存在时,会在远程主机新建一个同名分支,省略localbranch时,表示删除指定的远程分支,等同于git push  --delete ,当前分支与远程分支之间存在追踪关系时,可省略localbranch和remotebranch.如 git push swaggers swaggers:master

git pull remotehost remotebranch localbranch		从remotehost主机拉取remotebranch分支代码到localbranch分支

git checkout -b 本地分支名 origin/远程分支名          将远程git仓库里的指定分支拉取到本地(用于从远程仓库获取本地不存在的分支)
    
git push [] [][:]	推送代码,host默认为origin,localbranch默认为当前分支,remotebranch默认为当前分支追踪的分支
                                                            当remotebranch不存在时,会在远程主机新建一个同名分支
                                                            省略localbranch时,表示删除指定的远程分支,等同于git push  --delete 
                                                            当前分支与远程分支之间存在追踪关系时,可省略localbranch和remotebranch

三、检出至web目录

cd /data/web/src/
sudo git clone /home/centos/swaggers.git

四、操作中可能碰到的问题

在完成一次推送后,从web目录检出仓库代码的情况下,是不会出现问题的,但是如果是先在web目录下检出仓库代码,再去推送,推送的过程中就会报错,分支有问题,此时应执行如下代码:

git push swaggers +master:refs/heads/master

你可能感兴趣的:(研发管理)