zoukankan      html  css  js  c++  java
  • git 入门与应用

    git可视化界面的项目版本控制软件,适用于git项目管理

    SourceTree

    参考文献

    https://blog.csdn.net/Jioho_chen/article/details/81007238

    流程:通过windows本地上传到Linux目录仓库

    1. 在linux上安装git
    2. 在linux中新建一个git用户
    3. 创建ssh证书
    4. 导入ssh证书
    5. 选定一个空目录作为代码仓库
    6. 更改git命令的所有者
    7. 禁止ssh登录服务器
    8. 用git 部署裸仓库 
    9. 创建 hooks 钩子 实现本地推送到服务器 代码实施修改

    大概流程清楚后,下面开始实战:

    在linux上安装git

    使用命令:yum install git

    创建一个git用户

    创建用户:adduser git

    创建密码 :passwd 12345678

    windows创建ssh证书

    *这里创建ssh证书,是在本地创建,而不是在服务器端创建的。这个需要注意。以win为例,打开git命令面板,

    1、先配置用户名和邮箱:(如果已经配置了则跳过)
      git config --global user.name '你的名称'
      git config --global user.email '你的邮箱地址'

    2、然后生成公钥和私钥

     ssh-keygen -t rsa -C "你的邮箱地址"

    回车后会看到以下界面。这里是选择ssh文件保存的路径(直接回车),我选择默认路径,即最后一行显示的、 保存在了c盘的这个位置中(c/user/Jioho/.ssh/id_rsa)。

    紧接着会让你输入密码(会有2次确认,简短的英语很好理解的)。默认保持不输入(也是直接回车,避免每次clone代码都需要输入密码的麻烦)

    成功执行后会看到这样的界面:

    然后我们到刚才提示的c盘的目录中,找到我们需要的ssh文件。(之前一直找不到对应的文件夹,是因为C盘中的user的中文别名叫“用户”,所以C:/user/  其实就是 C:/用户/)。打开文件夹后,里面会有2份文件,分别为公钥和私钥。

    当然可以使用文本编辑器打开ssh公钥查看里面的内容(不推荐使用记事本直接打开,原因不多作解释)

    这时候我们就需要把id_rsa.pub文件放到服务器上,准备下一步的工作。这里我使用的是Winscp工具。把文件放在服务器任意地方都可以,只要自己找得到就行。

    导入自己的SSH证书

    以上生成SSH证书的步骤弄懂后,就需要把自己的ssh公钥证书导入服务器的公钥管理的地方

    在服务器中找到  /home/git/.ssh/authorized_keys 文件、如果没有就自己创建一个authorized_keys文件,注意路径不要弄错。

    mkdir .ssh    touch .ssh/authorized_keys   分别创建文件夹 与文件

    找到刚才放在服务器上的 id_rsa.pub文件。然后使用命令:cat id_rsa.pub >>  /home/git/authorized_keys   (这是一个小坑 路径要写对)

    最重要的一点,也是最容易出错的一点!linux一切皆文件,所以要给对应的文件设置好组和权限!!

    *注:这里的/home/git/下的文件所有者必须都为git  .ssh的权限为最少700或者755  authorized_keys权限最少为600

     chown -R git:git /home/git/.ssh/ # 获得 git 用户对版本库的权限

     chmod -R 700 /home/git/.ssh/

     chmod -R 600 /home/git/.ssh/authorized_keys

    创建一个裸仓库目录

    选定一个空目录作为仓库  这里选择  /var/www/git 目录。切换到目录下

    执行命令 :  git init --bare demo.git   (这样就创建了一个名叫 “demo”的git裸仓库了)

    更改仓库所有者和权限

    chown -R git:git demo.git

    禁止linux使用git的ssh登录

    这里禁止的意义是为了服务器的安全性,避免从git的ssh可以直接登录服务器

    vim  /etc/passwd文件
    找到 : git:x:1000:1000:,,,:/home/git:/bin/bash

    改为 : git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell

    以上步骤都完成后,就可以试下把服务器的代码clone下来了。由于是在自己服务器搭建的git环境,所以git文件的url如下:

    例子:

    git clone git@'ip服务器地址':/var/www/git/demo.git   ip时是需要单引号的

    sourcetree源路径 :git@39.00.00.81:/var/www/git/demo.git

    ip地址很好理解,而url后面的  /var/www/git/demo.git  则是git文件在服务器上的位置,如果仓库在其他目录,那么换成你对应的文件目录即可。

    确认项目路径没错后,回车进行clone。这时候会看到一句警告

    warning: You appear to have cloned an empty repository.

    不要慌张,其实仔细一看,只是git提示我们:你似乎clone了一个空的项目。打开克隆下来的文件夹,查看是否有一个.git的隐藏文件。如果有的话,那就是已经clone成功,那也代表着linux搭建自己的git服务成功了!然后就可以进行愉快的开发了。

    特别注意:在用sourcetree 克隆服务器上的仓库的时候 会显示无效的源路径  解决方法:

    问题出在网上的教程服务器上在设置用户名时  没有设置密码 服务器的git 是要设密码的!

    实现代码线上修改 hooks钩子

    进入我们的裸仓库的hooks文件夹,然后新建一个post-receive文件

    cd hooks/

    vim post-receive

    在post-receive写入以下内容:

    #!/bin/sh
    git --work-tree=/var/www/html/demo --git-dir=/var/www/git/demo.git checkout -f

    (前面  --work-tree 为你要部署工作代码要上传后的所在位置    后面 --git-dir 为你服务器上裸库所在位置)

    然后修改post-receive为可执行文件让其获得权限(其实这就是一个shell脚本文件)

    chmod +x post-receive

    post-receive的原理就是,当远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)。其实git还提供了很多其它动作的钩子,这里我们就不深入了解了

    注意:同时你还需要修改你的web站点目录的权限,修改所属用户与用户组为git,否则钩子的权限可能会不足而导致执行失败。(你也可以通过添加git用户到相应的用户组来解决问题)

    chown -R git:git /var/www/html/demo

    chown -R git:git /var/www/git/demo.git

    设置好钩子后,当你本地再次执行push的时候,你会发现你web目录的文件也同步的更新了。。。

  • 相关阅读:
    RocketMQ同一个消费者唯一Topic多个tag踩坑经历
    1.写一个字符串反转函数.
    1.什么是灰度发布?
    简单比较 @EnableEurekaClient 和 @EnableDiscoveryClient 两个注解
    字符串拼接出现null的问题
    webSocket无法注入bean问题解决方案
    数据库中的时间类型需要指定长度吗?
    SQL语句的优化
    NoClassDefFoundError
    1.代码规范之 if 语句编写
  • 原文地址:https://www.cnblogs.com/heanwanfeng/p/10361056.html
Copyright © 2011-2022 走看看