Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。php
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。html
Git 与经常使用的版本控制工具 CVS, Subversion 等不一样,它采用了分布式版本库的方式,没必要服务器端软件支持。linux
有关以上特性的详细解释,请查看Pro Git的Git基础章节。git
版本控制
和多人协做
开发。分支特性
,因此可以灵活地以不一样的工做流
协同开发。分布式版本控制系统
,即便协做服务器宕机,也能继续提交代码或文件到本地仓库,当协做服务器恢复正常工做时,再将本地仓库同步到远程仓库。pull request
操做来通知其余团队成员,其余团队成员可以review code后再合并代码。 Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践。github
Git Flow有主分支和辅助分支两类分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各类开发活动。web
主分支是全部开发活动的核心分支。全部的开发活动产生的输出物最终都会反映到主分支的代码中。主分支分为master分支和develop分支。服务器
辅助分支是用于组织解决特定问题的各类软件开发活动的分支。辅助分支主要用于组织软件新功能的并行开发、简化新功能开发代码的跟踪、辅助完成版本发布工做以及对生产代码的缺陷进行紧急修复工做。这些分支与主分支不一样,一般只会在有限的时间范围内存在。app
辅助分支包括:分布式
以上这些分支都有固定的使用目的和分支操做限制。从单纯技术的角度说,这些分支与Git其余分支并无什么区别,但经过命名,咱们定义了使用这些分支的方法。ide
使用规范:
feature/*
若有几个同事同时开发,须要分割成几个小功能,每一个人都须要从develop中拉出一个feature分支,可是每一个feature颗粒要尽可能小,由于它须要咱们能尽早merge回develop分支,不然冲突解决起来就没完没了。同时,当一个功能由于各类缘由不开发了或者放弃了,这个分支直接废弃,不影响develop分支。
使用规范:
release/*
,“*”以本次发布的版本号为标识release分支是为发布新的产品版本而设计的。在这个分支上的代码容许作小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等)。经过在release分支上进行这些工做可让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。
当develop分支上的代码已经包含了全部即将发布的版本中所计划包含的软件功能,而且已经过全部测试时,咱们就能够考虑准备建立release分支了。而全部在当前即将发布的版本以外的业务需求必定要确保不能混到release分支以内(避免由此引入一些不可控的系统缺陷)。
成功的派生了release分支,并被赋予版本号以后,develop分支就能够为“下一个版本”服务了。所谓的“下一个版本”是在当前即将发布的版本以后发布的版本。版本号的命名能够依据项目定义的版本号命名规则进行。
使用规范:
hotfix/*
除了是计划外建立的之外,hotfix分支与release分支十分类似:均可以产生一个新的可供在生产环境部署的软件版本。
当生产环境中的软件遇到了异常状况或者发现了严重到必须当即修复的软件缺陷的时候,就须要从master分支上指定的TAG版本派生hotfix分支来组织代码的紧急修复工做。
这样作的显而易见的好处是不会打断正在进行的develop分支的开发工做,可以让团队中负责新功能开发的人与负责代码紧急修复的人并行的开展工做。
全部使用了本规范的项目,必须严格规范操做,不然不予以合并代码、提测、打包上线等后续操做。
git config -l
主版本号.次版本号.修订号
,如2.1.13
。(遵循GitHub语义化版本命名规范)WorkSpace: 工做区
Index/Stage: 暂存区 "git add ." 命令解释: 把新建立文件(Untracked files 变成 Changes to be commited) 在暂存区域生成了快照,等待被提交
Repository: 本地仓库 git commit -m "提交到本地仓库" (只有暂存区域的文件(即:文件状态为“Changes to be committed”)才会被提交 )
Remote: 远程仓库 git pull origin / git push origin master:master (推送本地仓库分支代码到远程分支)
是什么
和为何
,而不是如何作为何要约定注释格式? 1. 加快 Reviewing Code 的过程 2. 帮助咱们写好 release note 3. 5年后帮你快速想起来某个分支,tag 或者 commit 增长了什么功能,改变了哪些代码 4. 让其余的开发者在运行
git blame
的时候想跪谢 5. 其余小伙伴不会出现想抽你的冲动 6. 总之,一个好的提交信息,会帮助你提升项目的总体质量看看 Linus Torvalds 在Linux项目上写的提交注释:https://github.com/torvalds/linux/commits/master以及 Linus Torvalds 关于提交注释的讨论:https://github.com/torvalds/linux/pull/17#issuecomment-5659933
推荐工具