git 在团队中的最佳实践--如何正确使用git flow

lss123

贡献于2018-09-03

字数:0 关键词: Git 版本控制系统

Git 在团队中的最佳实践--如何正确 使⽤Git Flow 我们已经从SVN 切换到Git很多年了,现在⼏乎所有的项⽬都在使⽤ Github管理, 本篇⽂章讲⼀下为什么使⽤Git, 以及如何在团队中正确使 ⽤。 Git的优点 Git的优点很多,但是这⾥只列出我认为⾮常突出的⼏点。 1. 由于是分布式,所有本地库包含了远程库的所有内容。 2. 优秀的分⽀模型,打分⽀以及合并分⽀,机器⽅便。 3. 快速,在这个时间就是⾦钱的时代,Git由于代码都在本地,打分⽀和 合并分⽀机器快速,使⽤个SVN的能深刻体会到这种优势。 感兴趣的,可以去看⼀下Git本身的设计,内在的架构体现了很多的优势, 不愧是出资天才程序员Linus (Linux之⽗) 之⼿ 版本管理的挑战 虽然有这么优秀的版本管理⼯具,但是我们⾯对版本管理的时候,依然有 ⾮常⼤得挑战,我们都知道⼤家⼯作在同⼀个仓库上,那么彼此的代码协 作必然带来很多问题和挑战,如下: 1. 如何开始⼀个Feature的开发,⽽不影响别的Feature? 2. 由于很容易创建新分⽀,分⽀多了如何管理,时间久了,如何知道每 个分⽀是⼲什么的? 3. 哪些分⽀已经合并回了主⼲? 4. 如何进⾏Release的管理?开始⼀个Release的时候如何冻结Feature, 如何在Prepare Release的时候,开发⼈员可以继续开发新的功能? 5. 线上代码出Bug了,如何快速修复?⽽且修复的代码要包含到开发⼈ 员的分⽀以及下⼀个Release? ⼤部分开发⼈员现在使⽤Git就只是⽤三个甚⾄两个分⽀,⼀个是Master, ⼀个是Develop, 还有⼀个是基于Develop打得各种分⽀。这个在⼩项⽬规 模的时候还勉强可以⽀撑,因为很多⼈做项⽬就只有⼀个Release, 但是⼈ 员⼀多,⽽且项⽬周期⼀⻓就会出现各种问题。 Git Flow 就像代码需要代码规范⼀样,代码管理同样需要⼀个清晰的流程和规范 Vincent Driessen 同学为了解决这个问题提出了 A Successful Git Branching Model 下⾯是Git Flow的流程图 上⾯的图你理解不了? 没关系,这不是你的错,我觉得这张图本身有点问 题,这张图应该左转90度,⼤家应该就很⽤以理解了。 Git Flow常⽤的分⽀ Production 分⽀ 也就是我们经常使⽤的Master分⽀,这个分⽀最近发布到⽣产环境的代 码,最近发布的Release, 这个分⽀只能从其他分⽀合并,不能在这个分 ⽀直接修改 Develop 分⽀ 这个分⽀是我们是我们的主开发分⽀,包含所有要发布到下⼀个Release 的代码,这个主要合并与其他分⽀,⽐如Feature分⽀ Feature 分⽀ 这个分⽀主要是⽤来开发⼀个新的功能,⼀旦开发完成,我们合并回 Develop分⽀进⼊下⼀个Release Release分⽀ 当你需要⼀个发布⼀个新Release的时候,我们基于Develop分⽀创建⼀个 Release分⽀,完成Release后,我们合并到Master和Develop分⽀ Hotfix分⽀ 当我们在Production发现新的Bug时候,我们需要创建⼀个Hotfix, 完成 Hotfix后,我们合并回Master和Develop分⽀,所以Hotfix的改动会进⼊ 下⼀个Release Git Flow如何⼯作 初始分⽀ 所有在Master分⽀上的Commit应该Tag Feature 分⽀ 分⽀名 feature/* Feature分⽀做完后,必须合并回Develop分⽀, 合并完分⽀后⼀般会删点 这个Feature分⽀,但是我们也可以保留 Release分⽀ 分⽀名 release/* Release分⽀基于Develop分⽀创建,打完Release分之后,我们可以在这 个Release分⽀上测试,修改Bug等。同时,其它开发⼈员可以基于开发 新的Feature (记住:⼀旦打了Release分⽀之后不要从Develop分⽀上合 并新的改动到Release分⽀) 发布Release分⽀时,合并Release到Master和Develop, 同时在Master 分⽀上打个Tag记住Release版本号,然后可以删除Release分⽀了。 维护分⽀ Hotfix 分⽀名 hotfix/* hotfix分⽀基于Master分⽀创建,开发完后需要合并回Master和Develop 分⽀,同时在Master上打⼀个tag Git Flow代码示例 a. 创建develop分⽀ git branch develop git push -u origin develop b. 开始新Feature开发 git checkout -b some-feature develop # Optionally, push branch to origin: git push -u origin some-feature # 做⼀些改动 git status git add some-file git commit c. 完成Feature git pull origin develop git checkout develop git merge --no-ff some-feature git push origin develop git branch -d some-feature # If you pushed branch to origin: git push origin --delete some-feature d. 开始Relase git checkout -b release-0.1.0 develop # Optional: Bump version number, commit # Prepare release, commit e. 完成Release git checkout master git merge --no-ff release-0.1.0 git push git checkout develop git merge --no-ff release-0.1.0 git push git branch -d release-0.1.0 # If you pushed branch to origin: git push origin --delete release-0.1.0 git tag -a v0.1.0 master git push --tags f. 开始Hotfix git checkout -b hotfix-0.1.1 master g. 完成Hotfix git checkout master git merge --no-ff hotfix-0.1.1 git push git checkout develop git merge --no-ff hotfix-0.1.1 git push git branch -d hotfix-0.1.1 git tag -a v0.1.1 master git push --tags Git flow⼯具 实际上,当你理解了上⾯的流程后,你完全不⽤使⽤⼯具,但是实际上我 们⼤部分⼈很多命令就是记不住呀,流程就是记不住呀,肿么办呢? 总有聪明的⼈创造好的⼯具给⼤家⽤, 那就是Git flow script. 安装 OS X brew install git-flow Linux apt-get install git-flow Windows wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow- installer.sh | bash 使⽤ 初始化: git flow init 开始新Feature: git flow feature start MYFEATURE Publish⼀个Feature(也就是push到远程): git flow feature publish MYFEATURE 获取Publish的Feature: git flow feature pull origin MYFEATURE 完成⼀个Feature: git flow feature finish MYFEATURE 开始⼀个Release: git flow release start RELEASE [BASE] Publish⼀个Release: git flow release publish RELEASE 发布Release: git flow release finish RELEASE 别忘了git push --tags 开始⼀个Hotfix: git flow hotfix start VERSION [BASENAME] 发布⼀个Hotfix: git flow hotfix finish VERSION Git Flow GUI 上⾯讲了这么多,我知道还有⼈记不住,那么⼜有⼈做出了GUI ⼯具,你 只需要点击下⼀步就⾏,⼯具帮你⼲这些事!!! SourceTree 当你⽤Git-flow初始化后,基本上你只需要点击git flow菜单选择start feature, release或者hotfix, 做完后再次选择git flow菜单,点击Done Action. 我勒个去,我实在想不到还有⽐这更简单的了。 ⽬前SourceTree⽀持Mac, Windows, Linux. 这么好的⼯具请问多少钱呢? 免费!!!! Git flow for visual studio ⼴⼤VS的福⾳ GitFlow for Visual Studio 最后 我经常收到邮件问我,他想使⽤Git, 但是公司还在坚持使⽤SVN等,问我 最么办? 我的办法是: 第⼀: 把我这篇⽂章给他看 第⼆: ⽴即找我,加⼊我们公司,我的邮箱是 wangdeshui@outlook.com QQ: 353275476

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档

相关文档