什么是Git , 如何使用Git , 如何实现Git自动部署

本文预计阅读时间 :  3分钟
复制代码

导读

本文将带你认识Git 和简单的使用Git 并不适合想要学习更深层次Git的读者 , 附带讲解了简单的自动部署脚本.git

若是你是一个合格的程序员那就应该学会使用Git , 否则不只苦了本身也苦了你的同事.程序员

毕竟没有人愿意放下手上的工做特意去教你 学会自我学习才是这个行业最好的技能.windows

若是你不肯意动手只是单纯的阅读这篇文章可能对并没有益处.缓存

什么是Git

Linux内核的发明人Linus开发的一个版本控制系统bash

Linus花了两周时间本身用C写了一个分布式版本控制系统,这就是Git!一个月以内,Linux系统的源码已经由Git管理了 这就是Git的出身 !服务器

Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的全部事务。 Git 易于学习,占用小,具备闪电般快速的性能。它超越了Subversion,CVS,Perforce和ClearCase等SCM工具 [git-scm.com]curl

在多人同时开发项目 , 一个优秀的版本控制器尤其重要编辑器

Git 的强大之处体如今它强大的分支功能,分布式控制系统等分布式

一个Git 客户端能够任何地方独立运行 , 仅仅在须要交换 "修改" 的时候进行联网同步函数

在实际的开发中每每也是须要一台服务器来充当Git的服务器 , 他的做用也仅仅只是为每一个客户端同步各自的修改

为何要使用Git

当多人同时开发项目时

两我的同时修改同一个文件时如何同时保留两我的的修改

当同时修改同一行数据时保留谁的修改

线上版本与测试版本如何同步文件如何保留部分差别配置文件

Git 出现便是为了解决这些问题(固然不只仅是)

在《Git权威指南》中提到喜欢 Git 的理由

  • 异地协同工做
  • 现场版本控制
  • 重写提交说明
  • 无尽的后悔药(分支回退,能够指定回到某一提交)
  • 更好用的提交列表(文件修改记录)
  • 更好的差别比较
  • 工做进度保存

如何搭建一个仓库

  1. 安装Git

    ########## Centos/RedHat ##########
    
     yum install curl-devel expat-devel gettext-devel \   openssl-devel zlib-devel
    
     ########## Debian/Ubuntu ##########
     $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \    libz-dev libssl-dev
    
     window 下 经过 https://gitforwindows.org/ 下载安装便可
    复制代码
  2. 在 Linux 下初始仓库

    //创建专属用户 Git(该用户应该拥有仓库文件的读写权限)
    
     adduser git
    
     //设置用户密码
    
     passwd git
    
     //建立仓库文件夹(可随意命名)
     mkdir /opt/git  
    
     //进入仓库目录
     cd /opt/git
    
     //初始化Git仓库
     git init --bare 仓库名称.git
    
     //赋予仓库文件夹权限
    
     chown -R  git:root 仓库名称.git
    复制代码
  3. 仓库结构

  • HEAD:指示目前被检出的分支
  • config:包含项目特有的配置选项
  • description:仅供 GitWeb 程序使用
  • hooks:包含客户端或服务端的钩子脚本(hook scripts)
  • info:包含一个全局性排除(global exclude)文件,用以放置那些不但愿被记录在 .gitignore 文件中的忽略模式(ignored patterns)
  • objects:存储全部数据内容
  • refs:存储指向数据(分支)的提交对象的指针

如何使用Git

//克隆仓库 (将远程仓库同步至本地)
git clone git@IP:/opt/git/仓库名称.git

//添加一个文件
touch readme.md

//添加到缓存区中 .表明全部文件 能够填写指定的文件名称
git  add . 

//提交至本地仓库
git commit -m '提交说明'

//同步至远程分支
git push
复制代码
  • 这里就不介绍更详细的命令了

其余请参照 git-scm.com/docs 官方文档

创建一个简单的部署脚本

//在 hooks 中建立一个函数
cd hooks
vi post-receive 

//编写部署脚本 (部署到该目录 www/wwwroot/test )
#!/bin/bash
git --work-tree=/www/wwwroot/test checkout -f

//赋予git用户 部署目录的读写权限
chown -R git:root /www/wwwroot/test

//赋予部署脚本执行权限
chmod +x post-receive
复制代码

这是实现的是简单的自动部署只是用于开发测试 , 具体的部署方案可能须要根据业务进行调整

有哪些好用Git客户端

  • 仓库的部署有 gitlab 方便的管理仓库
  • 客户端下JetBrains系列编辑器 对git 支持已经十分完善
  • 比较有名的Git 第三方管理客户端 有 Source Code 等

最后

平常开发中部署仓库这些用的比较少,更多的是做为客户端来使用 , 可能须要更多去了解 合并分支,分支的回退 , 分支的创建, 和 cherry-pick 的使用.

每次开发前更新一次分支我以为也是避免冲突好方法 , 学会编写更加温馨,合理,准确 commit 信息.

若是想要开发一些本身的我的项目 学会创建仓库也是颇有必要的 , 固然也有不少能够免费的使用的 Git 仓库,好比GitHub 这些 , 今年GitHub私人仓库也是能够无偿使用(不过协做人数仍是有限制的),还有码云这些国内的平台,若是本身有服务器 的也能够本身搭建仓库.

相关文章
相关标签/搜索