本文预计阅读时间 : 3分钟
复制代码
本文将带你认识Git 和简单的使用Git 并不适合想要学习更深层次Git的读者 , 附带讲解了简单的自动部署脚本.git
若是你是一个合格的程序员那就应该学会使用Git , 否则不只苦了本身也苦了你的同事.程序员
毕竟没有人愿意放下手上的工做特意去教你 学会自我学习才是这个行业最好的技能.windows
若是你不肯意动手只是单纯的阅读这篇文章可能对并没有益处.缓存
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
########## 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/ 下载安装便可
复制代码
在 Linux 下初始仓库
//创建专属用户 Git(该用户应该拥有仓库文件的读写权限)
adduser git
//设置用户密码
passwd git
//建立仓库文件夹(可随意命名)
mkdir /opt/git
//进入仓库目录
cd /opt/git
//初始化Git仓库
git init --bare 仓库名称.git
//赋予仓库文件夹权限
chown -R git:root 仓库名称.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
复制代码
这是实现的是简单的自动部署只是用于开发测试 , 具体的部署方案可能须要根据业务进行调整
平常开发中部署仓库这些用的比较少,更多的是做为客户端来使用 , 可能须要更多去了解 合并分支,分支的回退 , 分支的创建, 和 cherry-pick 的使用.
每次开发前更新一次分支我以为也是避免冲突好方法 , 学会编写更加温馨,合理,准确 commit 信息.
若是想要开发一些本身的我的项目 学会创建仓库也是颇有必要的 , 固然也有不少能够免费的使用的 Git 仓库,好比GitHub 这些 , 今年GitHub私人仓库也是能够无偿使用(不过协做人数仍是有限制的),还有码云这些国内的平台,若是本身有服务器 的也能够本身搭建仓库.