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

什么是Git , 如何使用Git , 如何实现Git自动部署
本文预计阅读时间 :  3分钟
复制代码

导读

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

如果你是一个合格的程序员那就应该学会使用Git , 不然不仅苦了自己也苦了你的同事.

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

如果你不愿意动手只是单纯的阅读这篇文章可能对并无益处.

什么是Git

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

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

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

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

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私人仓库也是可以免费使用(不过协作人数还是有限制的),还有码云这些国内的平台,如果自己有服务器 的也可以自己搭建仓库.

分类:
开发工具
标签: