Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git工作流:澄清和避免反模式_Git - Fatal编程技术网

Git工作流:澄清和避免反模式

Git工作流:澄清和避免反模式,git,Git,我正在为一个web应用程序项目开发Git工作流。我已经使用Git好几年了,但只是作为一个单独的开发人员。我把一套程序放在一起,昨天我偶然看到了这篇关于HN的文章: 根据这篇文章,我已经调整了我的程序,希望得到一些反馈。我想确保我正确地解释了这篇文章,并且没有对今后的问题做出贡献根据相关文章以及提供良好工作标准的愿望,以下程序是否存在任何问题? 基础 主分支-将所有代码插入其中的主工作分支 合并开发。这是最新添加的 来自各个开发分支的代码库 “开发”分支机构-应使用本地、私人开发分支机构开发新

我正在为一个web应用程序项目开发Git工作流。我已经使用Git好几年了,但只是作为一个单独的开发人员。我把一套程序放在一起,昨天我偶然看到了这篇关于HN的文章:

根据这篇文章,我已经调整了我的程序,希望得到一些反馈。我想确保我正确地解释了这篇文章,并且没有对今后的问题做出贡献根据相关文章以及提供良好工作标准的愿望,以下程序是否存在任何问题?


基础
  • 主分支-将所有代码插入其中的主工作分支 合并开发。这是最新添加的 来自各个开发分支的代码库
  • “开发”分支机构-应使用本地、私人开发分支机构开发新项目 特征。如果需要将分支推送到服务器(以便 在计算机之间轻松切换)请确保dev分支 名称包括用户名,如“dev_andy_authentication”
  • 暂存分支-在从主分支部署某些代码之前, 必须在与生产环境匹配的环境中测试代码 尽可能接近环境。来自主分支的代码是 合并到暂存分支中,进行测试,一旦通过测试,则 有资格生产
  • 生产分支-来自暂存分支的稳定代码集成到生产分支中,用发布版本号标记,然后部署到生产服务器

发展 分支机构:硕士

  • 使用本地专用要素分支来分隔代码:
    • 切换到“主”分支:git签出主
    • 创建一个新的私有特性分支:git checkout-b dev_newfeaturename
    • 添加功能
    • 阶段更改:git添加
    • 在“dev_newfeaturename”中提交更改:git Commit-m“Commit description”
  • 要集成“dev_newfeaturename”分支的更改,请执行以下操作:
    • 切换到“主”分支:git签出主
    • 检查对“主机”的远程更改:git pull--重新设置原始主机的基础
    • 如果“dev_newfeaturename”分支中的更改相对较小:
      • 将“dev_newfeaturename”分支的更改集成到master:git merge--squash dev_newfeaturename
      • 编写从“dev_newfeaturename”分支实现的更改的详细提交消息:git commit-v
    • 如果“dev_newfeaturename”分支中的更改更复杂,需要在历史记录中保留多个提交:
      • 切换到“dev_newfeaturename”分支:git checkout dev_newfeaturename
      • 将任何更改的“主”代码重新集成到“dev_newfeaturename”分支:git rebase--交互式主
      • 要通过组合提交清理历史记录,请将操作从“拾取”更改为“挤压”,从而将第二次提交挤压到第一次提交
      • 切换到“主”分支:git签出主
      • 将更改推送到远程“主机”:git推送到源主机
    • 检查对“主机”的远程更改:git pull--重新设置原始主机的基础
    • 将对“master”的所有更改推回服务器:git Push origin master
  • “主”成为所有当前开发功能的工作树
  • 定期从远程拉取“主控”更改:git pull--重新设置原始主控

登台 分支:登台

  • 一旦计划发布一定数量的功能/错误修复,确保“主”功能正常,然后通过以下方式合并到“暂存”中:
    • 切换到“暂存”分支:git签出暂存
    • 将“master”的更改集成到“staging”:git merge--无ff master
    • 将“暂存”推送到远程repo:git推送到源暂存
  • 将“staging”分支部署到staging服务器并严格测试-staging服务器应尽可能地复制生产环境
  • 如果任何测试失败,请返回“主”分支,修复任何相关问题,并重新启动转移过程
  • 如果所有测试均通过,则继续生产过程

生产 分支机构:生产

  • 测试并通过暂存分支中的代码后,切换到“生产”分支:git checkout production
  • 将“暂存”中的更改集成到生产中:git merge--无ff暂存
  • 带有顺序发行版本号的标记代码:git Tag-a 0.1
  • 将“生产”推送到远程回购:git推送到原始生产
  • 将“生产”分支部署到生产服务器并进行测试以确保正确部署
    • 您写道:

      如果“
      dev_newfeaturename
      ”分支中的更改更复杂,需要在历史记录中保留多个提交:

      • 切换到“
        dev\u newfeaturename
        ”分支:
        git checkout dev\u newfeaturename
      • 将任何更改的“
        master
        ”代码重新集成到“
        dev_newfeaturename
        ”分支:
        git-rebase——交互式master
      • 要通过组合提交清理历史记录,请将操作从“拾取”更改为“挤压”,从而将第二次提交挤压到第一次提交
      • 切换到“
        master
        ”分支:
        git checkout master
      • 将更改推送到远程“
        master
        ”:
        git推送到源站master
      我想您忘记了将“
      dev_newfeaturename
      ”快速合并到“
      master
      ”:
      rebase允许您在“
      master
      ”之上重播“
      dev_newfeaturename
      ”,清除该过程中的提交。那很好