前提,服务器已经装好ssh,本地也已经将ssh 公钥传到服务器对应位置

先用 pbcopy < ~/.ssh/PRIVATE_KEY.pub 将公钥复制到剪贴板;通过 ssh USER@SERVER 访问服务器,这时会提示输入密码(它也许只有这么一次「询问」的机会);成功登录后 vim ~/.ssh/authorized_keys,在合适的位置 cmd + V 并保存退出(同时 exit 退出 SSH 连接)。

  1. Host HOST_ALIAS # 用于 SSH 连接的别名,最好与 HostName 保持一致
  2. HostName SERVER_DOMAIN # 服务器的域名或 IP 地址
  3. Port SERVER_PORT # 服务器的端口号,默认为 ,可选
  4. User SERVER_USER # 服务器的用户名
  5. PreferredAuthentications publickey
  6. IdentityFile ~/.ssh/PRIVATE_KEY # 本机上存放的私钥路径

如何公钥名非默认,可打开上面的文件进行配置,在~/.ssh/config中

1  先在远程库 testproject目录(用户访问的那个git库)创建一个并行目录testproject.git(这是个目录,后面的后缀是为了方便认出是一个git库,用于设置hook)

2然后cd testproject.git,git init,初始化这个库,

然后vim .git/config

添加

[receive]

denyCurrentBranch = ignore

这两行,或者git config receive.denyCurrentBranch ignore

这样才可接受本地的push

然后这个git 库的地址就是   root@xxx.xxx.xxx.xxx:/xxx/xxx/testproject.git

中间是服务器的ip,后面是库的路径,注意这里的root是登录的用户,其实可以自己建一个其他的用户,这里root是懒,

建其他用户的方法是 useradd paul

userpwd paul设置密码

然后建立对应的库,并为库设置属主chmod paul:paul testproject.git

然后切换到pual用户,还要为新用户设置.ssh什么的,不然push提交的时候还是得输密码

上面弄好远程库后,再在本地git remote set-url --add origin root@xxx.xxx.xxx.xxx:/xxx/xxx/testproject.git

把这个远程库添加到Orogin名下,

3  在远程库.git/hooks下,cp post-update.sample  post-update ,vim post-update

把里面删除

加入

  1. #!/bin/sh
  2. unset GIT_DIR
  3. NowPath=`pwd`
  4. DeployPath="../../testproject"
  5. cd $DeployPath
  6. git pull origin master
  7. cd $NowPath
  8. exit 0
  9. 原理不复杂,就是当你Push时,同时向这个远程库push,push完后调用这个hook中的脚本,然后切换到对应目录去pull,完事,当然 也可以在这个hook中加些其他东西,比如python xxx.py什么的,招待一些
    脚本,不过好像本地当你提交时,必须要等这个hook中的脚本执行完毕,本地那边 才结束,因为当我运行一个
    while True:
      print "hello"
    时,本地那个会一直出现 hello.
    暂时没想到异步运行的方法

git push后自动部署的更多相关文章

  1. Git hook实现自动部署

    Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用.其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 ...

  2. 搭建Git服务器环境----Git hooks代码自动部署

    引言:自己想搭一套git的服务端环境,不想用github码云等.经多方资料整合,实验总结,以下是亲测有效的方式.可用于公司日常开发 一.搭建Git环境 ① 安装 Git Linux 做为服务器端系统, ...

  3. git管理和自动部署项目

    当一个项目需要纳入到版本控制的时候,选择的工具还是比较多的,最常见的就是工具有CVS,SVN,GIT等.在平时的开发中视情况而定,从来就没有最好的版本控制工具,只有最适合的工具.在这里我习惯用git来 ...

  4. jenkins maven git windows code 自动部署

    本人刚刚接触  写的不好就对付看看吧 哈哈哈O(∩_∩)O哈哈~ 最近看见别人弄得自动部署 自己也是手痒痒 也想弄一个 所以就弄了一个 windows的 我用的是https的  在网上看了很多都是 s ...

  5. 用 Git Hooks 进行自动部署

    原文发表于 http://ourai.ws/posts/deployment-with-git-hooks/ 昨天开始接手开发公司前端团队的主页,在稍微修改点东西后推送到远程仓库想看下线上结果时发现并 ...

  6. 宝塔webhook配合码云,本地git push 服务器自动pull

    emmmm,这其实是一个很简单的一件事情,但是有很多坑,记录一下 先大概讲一下原理吧,就是每次您 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 更多说明 » 然后在宝塔这边 ...

  7. “git push”后返回“Error 403”解决方法

    问题描述: 1,mac ox系统,terminal上运行命令git push出现403错误: 2,代码是在别人的github(暂且叫origin branch吧)上克隆的,修改和添加了部分代码后欲提交 ...

  8. git push后出现错误 ![rejected] master -> master(non-fast-forward) error:failed to push some refs to 'XXX'

    本地创建了一个project并在GitHub上创建了一个仓库,想要将本地的仓库链接到远程仓库我用的是如下方法:git init    //初始化本地仓库git remote add origin XX ...

  9. git push后修改错误的commit message

    Easiest solution (but please read this whole answer before doing this): git rebase -i <hash-of-co ...

随机推荐

  1. 记一下STL的一个题

    A. Diversity time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  2. ES6 Destructuring Assignment All In One

    ES6 Destructuring Assignment All In One ES6 & Destructuring Assignment Axios, vue https://develo ...

  3. Python中的单元测试模块Unittest快速入门

    前言 为什么需要单元测试? 如果没有单元测试,我们会遇到这种情况:已有的健康运行的代码在经过改动之后,我们无法得知改动之后是否引入了Bug.如果有单元测试的话,只要单元测试全部通过,我们就可以保证没有 ...

  4. [poj] 2074 Line of Sight || 直线相交求交点

    原题 给出一个房子(线段)的端点坐标,和一条路的两端坐标,给出一些障碍物(线段)的两端坐标.问在路上能看到完整房子的最大连续长度是多长. 将障碍物按左端点坐标排序,然后用房子的右端与障碍物的左端连线, ...

  5. POJ 1204 Word Puzzles | AC 自动鸡

    题目: 给一个字母矩阵和几个模式串,矩阵中的字符串可以有8个方向 输出每个模式串开头在矩阵中出现的坐标和这个串的方向 题解: 我们可以把模式串搞成AC自动机,然后枚举矩阵最外围一层的每个字母,向八个方 ...

  6. 设置RobotFramework的ftplibrary中,将Upload_file操作的异常改为回显错误信息。

    测试中需要通过FTP通道,将数据发送给服务器,而这个上传的数据要被阻断.在结合RobotFramework测试中,安装的ftplibrary,使用upload_file操作,如果上传动作失败,会抛出异 ...

  7. 用$("...").attr("checked", true)设置勾选无效的原因

    如下图所示,本来想要实现如下图所示的功能,于是我本来是使用$("...").attr("checked", true/false)来实现该功能,但是第一次点击时 ...

  8. Codeforces Round #504:D. Array Restoration

    D. Array Restoration 题目链接:https://codeforces.com/contest/1023/problem/D 题意: 给出一个序列,现在要求对一个全为0的序列执行q次 ...

  9. 在线cron生成器

    什么是cron表达式: cron表达式主要是用在Quartz框架中,Quartz是一个完全由java编写的开源作业调度框架,最主要的功能就是调度器(完成定时任务),可以与javaEE或者javaSE应 ...

  10. 转:Mysql explain

    转自:http://blog.csdn.net/zhuxineli/article/details/14455029(单纯学习而转) explain显示了MySQL如何使用索引来处理select语句以 ...