别院牧志知识库 别院牧志知识库
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
首页
  • 基础

    • 全栈之路
    • 😎Awesome资源
  • 进阶

    • Python 工匠系列
    • 高阶知识点
  • 指南教程

    • Socket 编程
    • 异步编程
    • PEP 系列
  • 面试

    • Python 面试题
    • 2022 面试记录
    • 2021 面试记录
    • 2020 面试记录
    • 2019 面试记录
    • 数据库索引原理
  • 基金

    • 基金知识
    • 基金经理
  • 细读经典

    • 德隆-三个知道
    • 孔曼子-摊大饼理论
    • 配置者说-躺赢之路
    • 资水-建立自己的投资体系
    • 反脆弱
  • Git 参考手册
  • 提问的智慧
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 工作
  • 规范

  • Linux

  • 数据库

  • Git

    • Git 知识整理
    • 使用 SSH 连接到 GitHub
    • Git 参考手册
    • Git 常用操作
    • 给你的 Github 克隆加速!🎈
    • 删除 Git 所有 Commit 记录
    • 如何使 Github 上面 fork 的代码与原仓库保持同步更新
    • git 工作流
      • A successful Git branching model
        • 解释
      • GitHub flow
        • Create a branch(创建一个分支版本)
        • Add commits (新增一个代码提交信息)
      • Open a Pull Request (打开一个代码合并请求)
      • Discuss and review your code(讨论审核你的代码)
        • Deploy(项目部署)
        • Merge(项目代码合并)
        • 总结
        • 改进
      • 推荐阅读
    • git 仓库忽略个人私有的文件
  • 👨‍💻Web

  • 英语

  • Docker

  • 编辑器

  • 网络

  • 前端

  • 存储

  • 备忘录

  • 如何开始你的单元测试
  • 以程序员的视角看中国——西安篇
  • 💻工作
  • Git
佚名
2021-01-04
目录

git 工作流

# A successful Git branching model (opens new window)

git-model

# 解释

  • master 分支

即主分支。任何项目都必须有个这个分支。对项目进行 tag 或发布版本等操作,都必须在该分支上进行。

  • develop 分支

即开发分支,从 master 分支上检出。团队成员一般不会直接更改该分支,而是分别从该分支检出自己的 feature 分支,开发完成后将 feature 分支上的改动 merge 回 develop 分支。同时 release 分支由此分支检出。

  • release 分支

即发布分支,从 develop 分支上检出。该分支用作发版前的测试,可进行简单的 bug 修复。如果 bug 修复比较复杂,可 merge 回 develop 分支后由其他分支进行 bug 修复。此分支测试完成后,需要同时 merge 到 master 和 develop 分支上。

  • feature 分支

即功能分支,从 develop 分支上检出。团队成员中每个人都维护一个自己的 feature 分支,并进行开发工作,开发完成后将此分支 merge 回 develop 分支。此分支一般用来开发新功能或进行项目维护等。

  • hotfix 分支

即补丁分支,由 develop 分支检出,用作 bug 修复,bug 修复完成需 merge 回 develop 分支,并将其删除。所以该分支属于临时性分支。 hotfix 分支,即热补丁分支。和 fix 分支的区别在于,该分支由 master 分支检出,进行线上版本的 bug 修复,修复完成后 merge 回 master 分支,并 merge 到 develop 分支上,merge 完成后也可以将其删除,也属于临时性分支。

# GitHub flow (opens new window)

翻译参考此处 (opens new window)

GitHub 工作流是一个轻量级的、基于分支理论的工作流方法,它为团队和那些需要定期进行部署的工程项目提供支持。这个指南解释 GitHub 工作流的流程以及这样设计的原因。

flow1

# Create a branch(创建一个分支版本)

当你和他人一起开发一个工程项目的时候,脑海中会不定时跳出来一些新的想法或者与原来计划不太一样的开发思路,最终这些想法有些会行的通,有些行不通。版本分支帮你管理这个工作流。

当你在你的项目中创建了一个分支版本时候,你也就创造了一个尝试你的好想法的环境。在分支版本上对代码做出的修改不会影响到你的master (主程序)分支,因此你可以自由的尝试修改和提交代码,直到与你合作的工程师决定根据你的修改修订主程序代码。

  • 提示

版本分支是 Git 上的一个核心概念。整个 GitHub 工作流都基于此。
只有一条准则:在master分支上的程序都可以被复制为多个分支程序。

缘于此,当你在开发一个新功能或者处理一个问题的时候从主程序中创建一个分支版本是非常重要的。你的分支版本名称最好起一个容易易懂、体现你修改内容的名称(例如:refactor-authentication ,user-content-cache-key,make-retina-avatars) ,这样别人才能够快速地知道你提交的是什么。

# Add commits (新增一个代码提交信息)

add_commits

分支版本创建完成后就可以开始修改一些代码了。当你添加、编辑、或者删除一个文件的时候,系统会跟踪你的操作,并把你的操作同步到你当前的分支版本代码中。

后台程序会记录下你的修改过程,并公开这些修改,以便别人能够知道你修改了什么,进一步理解你为什么这样修改。你的每一次提交都会有一个关联的提交描述信息,记录着你为什么要修改这一块代码。此外,每个提交都被认作是一个独立的修改单元(不会影响到其他版本)。这样当你发现一个 bug 或者有不同的想法的时候可以回退。

  • 提示

提交备注信息是很重要的,尤其是当你一旦把提交信息提交到服务器上,服务器上的 Git 系统会跟踪你的修改,并把它们展示给其他人。通过提交清晰的修改备注信息,别人会很容易明白你修改的内容并很快给出回复。

# Open a Pull Request (打开一个代码合并请求)

openpullrequest

针对你的提交信息, Pull Request 会发起一个讨论。因为你提交的修改后的代码和备注说明会与 Git 代码库紧紧地结合起来,所以有人接受了你的 Pull Request 请求后,他们会看到你修改了什么,以及哪些需要合并到主程序中。

在开发的过程中你可以在任何一个地方打开一个 Pull Request:当你有修改很少一部分代码或者几乎没有提交什么代码,但想分享一些截屏或者想法的时候,当你思路卡住想寻求帮助或建议的时候,或者当你准备让别人回复评论你的工作的时候。通过 GitHub 的通知系统——@mention (在你 Pull Request 窗口中)你可以向特定人或者团队寻求回复。

  • 提示

对于打开一个代码资源库,或者修改分享代码资源来说,Pull Requests 都非常有用。如果你在使用 Fork & Pull Model ,Pull Requests 会为你提供一个通知项目维护人员考虑你的修改的方式。如果你在使用 Shared Repository Model ,Pull Requests 会在代码合并到 master 中之前帮助你与他人进行关于要修改的代码的讨论。

# Discuss and review your code(讨论审核你的代码)

disscusscode

一旦你打开了一个 Pull Request,代码修订人员或团队会有很多问题和评论。也许代码风格不符合项目规定的格式,也许修改的代码没有单元测试,或者一切看起来都是如此的完美。Pull Request 的设计原则就是用来鼓励和引导这类讨论的。

你也可以小范围的讨论和反馈来推动整个流程的进度。如果有人评论你忘了一些事情或者代码中有 bug,你可以在你的分支中处理它并把结果提交到服务器上。GitHub 会在统一的 Pull Request 页面展示你最新提交的内容和别人最新的反馈信息。

  • 提示

Pull Request 评论是用 Markdown 工具编辑的,因此你可以插入图片和表情图标,用格式化的文本进行编辑。

# Deploy(项目部署)

Deploy

一旦你的 Pull Request 通过了审核,并且分支版本的代码也通过了你的测试,你就可以把你修改的代码放到生产上进行验证。如果修改的代码在生产上验证的时候有问题,你可以通过把上一个 master (上一个生产版本)重新部署到生产上以此来实现回退。

# Merge(项目代码合并)

merge

如果你修改的代码在生产上已经通过了验证,那么现在就要把你修改的代码整合到 master 分支中(主分支中)。

一旦合并,Pull Request 会在你的代码中保存一个历史修改记录。因为这些都是可以被搜索到的,所以它可以是任何人随时查看和了解当初是如何决定修改的。

  • 提示

通过向你的 Pull Request 中合并某些关键词,你可以把问题和代码关联起来。当你的 Pull Request 合并以后,那些关联的问题也会被关闭。例如:输入短语Closes #32 将会把代码库中 32 号问题关闭。要了解更多信息请查看帮助文档 (opens new window)。

# 总结

todo

# 改进

  1. 引入看板系统给问题安排优先级和跟踪进度
  2. 使用标签对 issues 进行分类
  3. 为 PR 配置自动化测试,参阅构建和测试 Python - GitHub Docs (opens new window)

更多参阅改进 GitHub 工作流的 15 个建议 - 简书 (opens new window)

# 推荐阅读

  • Git flow:一个并非完美的 git 工作流 (opens new window)
  • 字节研发设施下的 Git 工作流 - 知乎 (opens new window)
  • 图文详解如何利用 Git+Github 进行团队协作开发 - 知乎 (opens new window)
编辑 (opens new window)
#git
上次更新: 2024-07-15, 08:03:22
如何使 Github 上面 fork 的代码与原仓库保持同步更新
git 仓库忽略个人私有的文件

← 如何使 Github 上面 fork 的代码与原仓库保持同步更新 git 仓库忽略个人私有的文件→

最近更新
01
提升沟通亲和力的实用策略
03-26
02
工作
07-15
03
如何选房子
06-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 IMOYAO | 别院牧志
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式