本文预计阅读时间 : 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 的理由
- 异地协同工作
- 现场版本控制
- 重写提交说明
- 无尽的后悔药(分支回退,可以指定回到某一提交)
- 更好用的提交列表(文件修改记录)
- 更好的差异比较
- 工作进度保存
- 快
如何搭建一个仓库
-
安装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 复制代码
-
仓库结构
- 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私人仓库也是可以免费使用(不过协作人数还是有限制的),还有码云这些国内的平台,如果自己有服务器 的也可以自己搭建仓库.