PS. 可能用到的命令:
1.从指定 commit拉出新分支
git checkout commitId -b 本地新branchName git checkout 9fbc3d0 -b feature-A2.创建新tag /从指定 commit 创建 tag
创建轻量标签 git tag release-0.1.2
创建附注标签 git tag -a release-0.1.2 -m "0.1.2版本"
指定 commit创建标签 git tag -a release-0.1.2 9fbc3d0
Git 是什么
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
有关以上特性的详细解释,请查看Pro Git的Git基础章节。
Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践。
Git Flow有主分支和辅助分支两类分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各种开发活动。
主分支是所有开发活动的核心分支。所有的开发活动产生的输出物最终都会反映到主分支的代码中。主分支分为master分支和develop分支。
辅助分支是用于组织解决特定问题的各种软件开发活动的分支。辅助分支主要用于组织软件新功能的并行开发、简化新功能开发代码的跟踪、辅助完成版本发布工作以及对生产代码的缺陷进行紧急修复工作。这些分支与主分支不同,通常只会在有限的时间范围内存在。
辅助分支包括:
用于开发新功能时所使用的feature分支用于辅助版本发布的release分支用于修正生产代码中的缺陷的hotfix分支以上这些分支都有固定的使用目的和分支操作限制。从单纯技术的角度说,这些分支与Git其他分支并没有什么区别,但通过命名,我们定义了使用这些分支的方法。
使用规范:
命名规则:feature/*develop分支的功能分支feature分支使用develop分支作为它们的父类分支以功能为单位从develop拉一个feature分支每个feature分支颗粒要尽量小,以利于快速迭代和避免冲突当其中一个feature分支完成后,它会合并回develop分支当一个功能因为各种原因不开发了或者放弃了,这个分支直接废弃,不影响develop分支feature分支代码可以保存在开发者自己的代码库中而不强制提交到主代码库里feature分支只与develop分支交互,不能与master分支直接交互如有几个同事同时开发,需要分割成几个小功能,每个人都需要从develop中拉出一个feature分支,但是每个feature颗粒要尽量小,因为它需要我们能尽早merge回develop分支,否则冲突解决起来就没完没了。同时,当一个功能因为各种原因不开发了或者放弃了,这个分支直接废弃,不影响develop分支。
使用规范:
命名规则:release/*,“*”以本次发布的版本号为标识release分支主要用来为发布新版的测试、修复做准备当需要为发布新版做准备时,从develop衍生出一个release分支release分支可以从develop分支上指定commit派生出release分支测试通过后,合并到master分支并且给master标记一个版本号release分支一旦建立就将独立,不可再从其他分支pull代码必须合并回develop分支和master分支release分支是为发布新的产品版本而设计的。在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等)。通过在release分支上进行这些工作可以让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。
当develop分支上的代码已经包含了所有即将发布的版本中所计划包含的软件功能,并且已通过所有测试时,我们就可以考虑准备创建release分支了。而所有在当前即将发布的版本之外的业务需求一定要确保不能混到release分支之内(避免由此引入一些不可控的系统缺陷)。
成功的派生了release分支,并被赋予版本号之后,develop分支就可以为“下一个版本”服务了。所谓的“下一个版本”是在当前即将发布的版本之后发布的版本。版本号的命名可以依据项目定义的版本号命名规则进行。
使用规范:
命名规则:hotfix/*hotfix分支用来快速给已发布产品修复bug或微调功能只能从master分支指定tag版本衍生出来一旦完成修复bug,必须合并回master分支和develop分支master被合并后,应该被标记一个新的版本号hotfix分支一旦建立就将独立,不可再从其他分支pull代码除了是计划外创建的以外,hotfix分支与release分支十分相似:都可以产生一个新的可供在生产环境部署的软件版本。
当生产环境中的软件遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上指定的TAG版本派生hotfix分支来组织代码的紧急修复工作。
这样做的显而易见的好处是不会打断正在进行的develop分支的开发工作,能够让团队中负责新功能开发的人与负责代码紧急修复的人并行的开展工作。
所有使用了本规范的项目,必须严格规范操作,否则不予以合并代码、提测、打包上线等后续操作。
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
如果怕自己忘记或尚未养成习惯,可以设置模板:
1 2 3 4 5 6 7 8 9
50-character subject line
72-character wrapped longer description. This should answer:
* Why was this change necessary? * How does it address the problem? * Are there any side effects?
Include a link to the ticket, if any.
下面是一则推荐的提交注释内容:
1 2 3 4 5 6 7 8 9 10Redirect user to the requested page after loginhttps://trello.com/path/to/relevant/cardUsers were being redirected to the home page after login, which is less useful than redirecting to the page they had originally requested before being redirected to the login form.* Store requested path in a session variable * Redirect to the stored location after successfully logging in the user在阿里 我们如何管理代码分支
Git 在团队中的最佳实践--如何正确使用Git Flow
基于git的源代码管理模型——git flowGit版本控制与工作流Git分支管理策略常用 Git 命令清单git-flow 备忘清单语义化版本 - GitHub起草的版本号命名规范写好Git Commit信息的7个建议写出好的 commit message如何设置Git提交注释模板GIT版本团队内部操作规范转载于:https://www.cnblogs.com/wangdaijun/p/10858380.html
相关资源:everday-action-commit:每天(或任何时间)使用此仓库进行提交-源码