什么是版本控制:
官方说法:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统,你可以对任何类型的文件进行版本控制。
要做好版本控制,少不了相应的系统,版本控制系统也经历过不少变迁:
原始 —— 本地版本控制系统:用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。适合于个人开发,手动打版。
进化 —— 集中式版本控制系统:是为了解决开发者协同工作问题,诸如 CVS
、Subversion
。它们都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
再进化 —— 分布式版本控制系统:为了解决单点备份问题,进化出了分布式版本控制系统,最有名的莫过于 Git
。客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
当然,Git
除了能解决单点故障问题,还有诸如离线提交、快速切换分支、方便合并、更少的仓库污染等特性。 在技术层面上,Git绝对是一个无中心的分布式版本控制系统,但在管理层面上,我建议你保持一个中心版本库(Origin),如下图所示:
Linux:
sudo apt-get install git-core
Windows:Git for windows
查看配置:
git config --list/-l
更改配置:
git config --global user.name "X-兵戈" git config --global user.email "770581715@qq.com"
作用域:
--system --global --local
初学Git时,尽量动手敲过所有命令行。以下是一些Git最基础的命令,需要烂熟于心。
* git clone/git ini
* git add/git commit(必须带message)
* git branch/git checkout
* git fetch/git pull/git push(不要用---force参数)
* git status/git log * gitk:图形化界面看记录
* .gitignore:忽略文件
附上之前同事总结的Git常用命令:
参考业界常用的Git分支规范,总结理财技术的规范如下:
tag分支 :打版本分支,每次上线前需要打一个版本,可以采用 tag-版本号 的命名方式。还可以作为回滚的分支
release分支 :小项目一般用不上,我建议理解为里程碑项目版本分支。常用于上线发布前的准备工作及代码修复,严禁新功能的并入,新功能应该是被合并到“develop”分支的。起源于develop分支,最终归于“develop”或“master”分支。可以采用 release-版本号 的命名方式
分支 | 职责描述 |
---|---|
master | 配置管理员 :统一创建、部署、维护(不允许手动提交) |
develop | 配置管理员 :统一创建、部署 开发人员 维护(feature测试通过后merge至"develop"分支) |
feature | 开发人员 :各模块自行创建、部署、维护(测试通过后merge至"develop"分支) |
fixbug | 配置管理员 :统一创建、部署、维护(测试通过后自动merge至“master”和“develop”) <br> 开发人员 :修复bug,协助解决自动merge中发生的冲突 |
tag | 配置管理员 :统一创建(每次上线前创建) |
分支 | 环境 |
---|---|
Master/fixbug | 线上环境 |
develop | 测试环境/联调环境/预发环境 |
feature | 各模块测试环境 |
✦ ✦ ✦ ✦ ✦ ✦ ✦ ✦
作者:黄云一鹤 原文:
https://my.oschina.net/xbingo/blog/532262