使用 GIt 同步部署代码(一) - 搭建 GIt 裸仓库同步代码

导语

上文介绍了怎么经过 PhpStorm 使用 FTP 同步代码文件,到目前为止使用了近四个月。这种方式和 Git 互有利弊,整体来讲仍是 Git 更方便一些,下面记录下使用 Git 同步以及部署的过程。服务器版本为 CentOS 7.2,本地为 Mac。html

流程

首先说明一下开发以及部署的流程。这个项目目前只是我的练习,因此不涉及团队合做。在通过下面的改造后,开发流程以下laravel

  1. 本地开发,环境使用的是 Homestead
  2. Git 上传代码到服务器的裸仓库中
  3. 裸仓库使用 Git Hook 自动部署到正式目录中
  4. 在正式目录中将代码手动上传到 GitHub

本地开发完成后,执行一次 git push 便可自动部署代码到正式目录,正式目录中再执行一次 git push 上传到 GitHub。
实际在最后一步的时候,也可使用 Git Hook 自动上传代码到 GitHub,也就是整个流程只须要一次 git push 便可。🤔,暂时不了。
下面的过程会分为已有代码和无代码两种状况进行。git

服务器添加 Git 用户

  1. 参考以前写的建立新用户,建立 git 用户
  2. 禁用 git 用户使用 shell 登录,编辑 /etc/passwd,将 git:x:1001:1001::/home/git:/bin/bash 修改成 git:x:1001:1001::/home/git:/usr/bin/git-shell
  3. 使用证书设置免密,参考这篇文章中的生成密钥、服务器配置,将本地的 id_rsa.pub 写入到 /home/git/.ssh/authorized_keys 文件中

创建 Git 裸仓库

  1. 新建目录,用于存储全部 Git 裸仓库。我是在根目录下新建了 git 目录,根据状况本身选择
  2. 设置目录全部者为 git,chown git:git git
  3. 在 git 目录下,初始化一个裸仓库 git init --bare my_laravel.git--bare 参数即为指定裸仓库git init
  4. 修改全部者为 git,chown -R git:git my_laravel.git

本地克隆代码

分为两种状况,一种是本地已有代码,也就是我目前的状况;另外一种是没有,从仓库中 clone 下来新建。github

已有代码

  1. 在代码目录中,初始化 git,git init
  2. 添加全部文件,git add .
  3. 提交 git commit -m 'init'
  4. 将代码与远端仓库创建链接,git remote add origin git@you_servier:/you_git_path/my_laravel.git
  5. push 代码,git push origin master
  6. 设置分支跟踪 git branch --set-upstream-to=origin/master master

服务器中的裸仓库中已经有了记录shell

git log

新建项目

  1. 直接 clone 就能够了,git clone git@you_server:/you_git_path/my_laravel.git
  2. 而后就是正常的 addcommitpush

服务器中裸仓库的记录也是正确的segmentfault

git log

结语

至此服务端与本地的代码同步已经完成。余下的问题,下篇继续。bash


参考资料:搭建Git服务器如何将一个已存在的目录转换为一个 GIT 项目并托管到 GITHUB 仓库服务器