使用 Git 版本控制,是对使用它之前的所有版本控制方式的一种改进。然而,很多组织最终以太过混乱或过于复杂的流程来结束。这个问题对于刚从其他版本控制系统转过来的组织来说特别突出。
在本文中我们会列出 GitLab 工作流 的11条规则,以帮助简化、整理工作流程。这些规则最主要的益处是(或我们希望是) 它能够简化流程并且产生一个更高效和更清楚的成果。
我们认为总会有可改善的空间,并且每一次改善都是草案。一如既往,每个人都可以做出贡献!反馈和提意见是非常受欢迎的。
-
使用功能分支,不直接提交到master.
如果你从 SVN过来,例如,你将习惯于基于trunk的工作流。当使用Git的时候,你应该为你做的任何事情创建一个分支,以便你以merge前的代码评审作为结束。 -
测试所有的提交,不仅仅是master上的提交.
一些人设置他们的CI仅仅测试那些被合并到master的提交。这太迟了;对于master总是绿色的测试人们应感到有信心。对人们来说在他们开始开发新功能前不得不测试master是没有意义的,例如,CI不是很昂贵,所以按这种方式做才有意义。 -
在所有的提交上运行所有的测试(如果运行测试多于5分钟,并行运行它们).
如果你工作在一个特性分支并添加新提交,然后在那个分支运行测试。如果测试花费较长时间,试着并行的运行它们。在服务端的合并请求运行所有的测试套件。如果你有一个服务于开发的测试套件,另一个仅仅是对新版本的,那么值得设置并行测试,分别运行它们。 -
在合并到master前执行代码评审,而非事后.
不要在一周结束的时候测试所有的东西。 当场做,因为你会更容易抓住可能导致问题的事情,其他人也会努力想出解决方案。 -
部署是自动的,基于分支或基线.
如果你不想每次部署master,可以创建一个生产分支。但是这里没有理由为什么你可能使用一个脚本或登录到某个地方手动部署。让一切自动化,或者一个特定的分支触发一次生产部署。 -
基线是人为创建,而不是CI创建.
用户创建一个基线,基于那个基线,CI将执行一个操作。你不应该让CI更改代码仓库。如果你需要非常详细的指标,您应该有一个服务器报告列出了新版本。 -
依赖tags版本进行发布.
如果你为你的项目生成tag,这表示你发布了一个新版本。 -
绝不以重置方式提交变更
如果你将一个项目的变更提交到一个公共的分支上,你不应该使用重置方式(即不应用 git rebase),
否则将造成难以追踪你对该项目的改善和相应的测试结果,这样做实际上破坏了他人选择最有利于的版本的依据。
我们有时也违反这条准则,当我们要求一个贡献者使用(git merage –spansh)提交他的修改,以便提供真实的修改历史,忽略他本地不规范的修改历史时。这样做以后查阅修改历史时,容易根据修改历史做版本恢复。但是总而言之 推荐做法为:代码应该纯净,修改历史应该真实。 -
每个人都应该从主支开始,并一直以主支为基础
这意味着你不从任何分支开始。你检出主支内容,然后创建你的特性,提交你的合并请求,下次修改还是以主支为基础。在你合并内容到主枝上时,你应该完成审查,不应该包含其他中间阶段的内容。 -
先修改主支中的错误,之后发布分支
如果你发现一个bug,最差的事是你修改了刚发布的版本,而未修改主支。
避免这种情况发生,你应该总是先修改主枝,之后再发布另外一个版本用来修复已发布版本中的错误。 -
提交的信息中反应你修改部分的意图.
你应该不止说明你做了什么,还应该说明你为什么这么做。如果你解释为什么这么做而没有使用其他方式,这将会更有用。
相关推荐
从 ...客户端安装 SSH key使用(Mac) ...新建项目规则 项目检出check 创建分支branch 代码提交Commit 代码拉取Pull 代码推送Push 代码标签tag 代码冲突解决 创建忽略文件 Git Flow实战 等方面介绍Gitlab的使用
7. **工作流**:Git 有许多推荐的工作流,例如 GitFlow、GitHub Flow 和 GitLab Flow,它们为团队协作提供了指导。 Makefile 文件是构建过程的自动化脚本,主要包含以下内容: 1. **目标和依赖**:Makefile 中定义...
结合实际情况编写的配置库管理及版本管理规范,配置库管理工具基于gitlab编写,分支策略采用git flow,定义了版本命名规则等
与功能分支工作流相比,GitFlow更加复杂,但它为不同类型的分支分配了明确的角色,并定义了它们之间的交互规则。 #### 主要概念 - **Master分支**:存储正式发布的版本历史。 - **Develop分支**:作为所有功能分支...
5. **开发流程**:开源项目通常遵循一定的开发流程,如GitHub Flow或GitLab Flow,涉及到拉取请求(Pull Request)、代码审查和持续集成/持续部署(CI/CD)。 6. **许可证和贡献**:开源项目会包含一个明确的许可证...
熟练使用Git进行版本控制,理解和应用分支策略,如GitHub Flow或GitLab Flow,以便团队协作和代码管理。 总之,要成为一位优秀的PHP开发者,不仅需要扎实的语法基础,还要精通编码规范、安全实践、设计模式,以及...
同时,项目可能遵循特定的编程规范和开发流程,例如使用GitHub Flow或GitLab Flow等版本控制策略。 此外,开源项目通常有贡献指南(CONTRIBUTING.md)、README文件和许可证文件(LICENSE),这些都是了解如何参与...
4. 功能完成后,发起一个合并请求(如GitHub的Pull Request或GitLab的Merge Request),其他团队成员审查代码。 5. 代码审核通过后,将功能分支合并回主分支,通常是`git merge --no-ff featureXYZ`,保留合并记录。...
2. **Git工作流**:例如GitFlow、GitHub Flow或GitLab Flow,它们定义了如何管理和发布不同阶段的代码。 3. **GitHub Actions**或类似的CI/CD工具:如Jenkins、GitLab CI/CD,它们可以监听Git事件并执行预定义的任务...
"IOS_Rules-and-Scripts"这个主题涵盖了iOS平台的核心组成部分,包括应用的分发规则、URL Scheme的复写规则以及自动化构建和部署脚本。下面我们将深入探讨这些关键知识点。 1. **iOS 分流规则**: iOS应用的分发...
- Gitlab flow:Gitflow的变种,增加了维护分支以处理持续的bug修复和小改进。 5. Git分支工作技巧 - 在开始工作前,应先拉取最新代码,避免冲突。 - 使用Pull Request或Merge Request进行代码审查,确保代码...
2. **Git工作流**:在多仓库环境中,理解并实施合适的Git工作流(如GitFlow、GitHub Flow或GitLab Flow)至关重要,以确保代码的同步和合并顺畅。 3. **依赖管理**:每个仓库可能依赖于其他仓库的代码,因此需要有...
3. **分支模型**: 不同的团队和项目可能需要不同的分支模型,例如Git-flow、GitHub-flow或GitLab-flow,来适应他们的开发流程和发布周期。 源代码管理是一套复杂的体系,需要团队成员之间有良好的沟通、协调和配合...
- **GitLab Flow**:与GitHub Flow类似,但增加了`feature`分支,用于隔离开发,待审查后合并到`master`。 4. **最佳实践**: - **经常合并**:保持`master`分支的稳定性,定期将`develop`或`feature`分支合并到`...
3. **分支策略**:在“合并管理4”中,可能涉及到一种特定的分支管理策略,例如Git Flow、GitHub Flow或GitLab Flow。这些策略规定了如何创建、命名和合并分支,以保持代码库的整洁和可维护性。 4. **代码审查**:...
Git是分布式版本控制系统...通过实际操作,如创建分支、解决冲突、使用GitHub Flow或GitLab Flow等开发流程,可以更好地掌握Git的精髓。希望这个"Teste_Git_1"项目能帮助你深入理解和应用Git,为你的开发工作带来便利。
通过实施代码审查和自动化工具,如GitHub的Pull Request或GitLab的Merge Request,可以确保每次提交都符合团队的提交规范。同时,自动化工具如 Husky 和 lint-staged 可以在提交前检查 commit message 的格式,确保...
此外,项目可能还包含测试、Docker配置、持续集成脚本(如Jenkins或GitLab CI/CD)以及监控工具(如Spring Boot Actuator、Prometheus和Grafana)的配置。 深入研究这个"open-cloud-master"项目,你将有机会学习...
- **集成的协作平台**:通过GitHub或GitLab等平台,Git不仅作为一个版本控制工具,还能实现代码托管、文档管理、问题追踪等功能。 #### 三、中心式协同工作流 中心式协同工作流是一种最简单的Git工作流模式,类似于...