git团队开发使用流程概述和注意点

2023-10-27

重新温习了一下git,这篇文章主要总结一下使用git做开发的整体流程,所以不会做过多的git指令的详细说明。

整体流程

这里我在本地进行模拟,我希望模拟达到的效果是,一共有4个端。project是一个仓库,manager是项目负责人、zs和ls是开发人员,他们3个都参与项目,都是项目贡献者,分别在他们各自的电脑上进行开发,这是我本地的目录结构:

| project // 路径是   D:\桌面\project 
| zs      // 路径是   D:\桌面\zs 
| ls      // 路径是   D:\桌面\ls
| manager // 路径是   D:\桌面\manager 

首先manager创建这个项目,创建了一个project文件夹,然后使用git init --bare,创建一个裸仓库。然后manager返回自己的电脑(也就是上面提到的manager目录),执行git clone D:\桌面\project ,然后manager创建README.md文件,简单初始完毕master分支之后执行。

git add README.md
git commit -m '初始化项目,添加README文件'
git push
// 上面这两句就是简单初始化一个master分支然后push上去
git branch dev
git switch dev
// 上面这两句就是基与master分支创建dev分支,然后manager切换到dev去初始化项目框架啥的

manager在dev分支建立好框架之后告诉zs和ls,我项目初始化完毕了,你们拉取代码开发。这个时候zs和ls应该基与dev分支创建属于自己的分支。比如说zs这个人进入到自己的电脑(也就是上面提到的zs目录),进行一下的操作:

git clone D:\桌面\project // 这个时候默认本地只有master分支
git switch dev // 这句指令是切换到dev分支,因为本地没有dev分支,所以会看远程有没有,如果有,就会创建本地dev分支,并且拉取远程dev分支内容

git brnach zs // 这个时候是在dev分支创建的zs分支
git switch zs // 切换到zs这个分支,进行对应的代码开发

zs代码如果开发完毕了就可以执行

git push // 这个时候本地实在zs分支,所以这样就会pushdao远程的zs分支

ls这个人也会和zs有着相同的操作,就不赘述了。
如果zs和ls都开发完毕了。manager就可以把zs和ls分支的代码合并到dev了,manager再次进入到他的电脑,执行一下操作:

git switch zs // 切换到zs分支
git pull // 拉取zs分支的代码

git switch dev // 切换到dev分支
git merge zs // 那zs的代码合并到dev分支

git switch ls // 切换到ls分支
git pull // 拉取ls分支的代码

git switch dev // 切换到dev分支
git merge ls // 那ls的代码合并到dev分支

基本这样就ok了,然后进行测试,测试的话可能会有bug,bug修复的话,可以基与dev分支创建bugfix分支,然后再用dev分支去合并bugfix分支,bug修复完毕之后,切换进入master分支,基本master分支合并dev分支,master分支的代码就是线上环境的代码了。然后可以再master上打tag,相当于是一个里程碑:

git tag -a v0.1.0 -m '第一个版本' // 打标签
git tag // 查看标记
git push origin 'v1.0' // 把tag推送到远程服务器

当然可能还有一些其他的场景。

场景一

zs这个时候正在在他自己的分支上开发,但是manager告诉在dev分支上有一个bug,很紧急,必须停下手上现有的活去修复bug。这个时候你可能会想,很简单嘛。直接切换到dev分支,然后拉一下最新代码,在基与dev分支切出一个bugfix分支进行修复bug,开发完毕在切回dev,合并bugfix不就ok了吗?确实是这样,但是还有一个细节,当你切换到dev的时候,你在zs这个分支上可能还有一些代码仍在工作区或者暂缓区,那应该怎么把这些东西处理完毕呢?直接执行git commit吗?,感觉不是太好。我们可以先执行git add .,然后执行git stash

git stash // 将暂缓区的内容保存起来,方便我们切换分支做其他分支的事情(注意是暂缓区不是工作区)

然后修复完bug之后切回zs分支,执行git stash apply恢复之前的代码,继续开发

git stash pop // 会变更stash里面的栈
git stash apply // 不会变更stash里面的栈

场景二

manager在dev分支上合并zs分支,发现合并完毕之后有一些冲突,然后manager尝试解决这些冲突,但是发现有些冲突好像搞不定,需要zs自己搞,然后manager执行git merge --abort,也就是我不合并了,恢复合并zs这个分支之前的样子,然后通知zs,让他自己解决冲突,这个时候zs该如何操作呢?

zs切换到dev分支,然后拉取最新代码,然后再切换回zs分支,执行git merge dev,然后解决冲突完毕,在zs分支执行git push,然后通知manager冲突解决完毕了,现在可以合并zs分支了。然后manager切换到zs分支,拉取最新代码,然后再切回dev分支,然后基于dev分支,继续merge zs这个分支。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git团队开发使用流程概述和注意点 的相关文章

  • GIT - 推送到 (GitHub) origin master 没有任何作用

    我已经分叉了某人的 GIT 存储库 https github com nippysaurus toodledo objc 将其克隆到我的本地计算机 显示带有以下信息的来源 remote origin Fetch URL https emai
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • 在 Windows 上使用 Git - 意外丢失了大量工作。我可以拿回来吗?

    我很困惑 我想我已经失去了几个小时的工作时间 我之前在 Git 中编辑了一个文件 我保存了它 但没有提交 我确实做了一些其他文件更改 并提交并推送了它们 然而 有一个文件被搞乱了 所以我单击了最后一次成功的提交 然后按了 回滚到此提交 令我
  • GitHub Pages (github.io) doxygen 生成的页面未找到 (404)

    我不明白为什么找不到 doxygen 生成的页面 404 它在Github存储库中的路径是https github com AubinMahe AubinMahe github io blob master doxygen html dd
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • 为别名命令添加“git help”?

    我已经实现了一个 Git 命令并使用 git 别名将其连接到 Git 但是有没有办法连接 Git 帮助 我在 Windows 上运行 如果我发出git help mycmd我收到一个弹出窗口 告诉我 Git 找不到 git mycmnd h
  • Git:以新名称签出旧版本的目录

    如何以新名称查看目录的先前版本 我一直都有一个目录foo在我的仓库中 我想创建一个目录foo old在我当前的工作树中 其内容是HEAD 2 foo 我同时需要两个版本 以确保它们给出相同的结果 测试这需要相当多的代码 并且需要同时提供两个
  • 如何获取 git 存储库中所有文件的计数?

    如何获取 git 存储库中当前所有文件的计数 您可以使用以下命令获取 git 存储库中所有跟踪文件的计数 git ls files wc l 命令分解 The git ls files命令本身打印出存储库中所有跟踪文件的列表 每行一个 Th
  • Git 中的数据完整性?

    我现在已经多次听到提到 Git 提供数据完整性 但是 这是什么意思 据我所知 git 中的所有对象都是使用 SHA 1 校验和来访问的 并且该校验和是根据文件的内容计算的 这意味着如果文件发生更改 您将得到不同的校验和 但这如何提供数据完整
  • Heroku 应用程序上的 Nodejs Express EACCES 0.0.0.0:80

    我正在尝试在他们的网站上新创建的 Heroku 应用程序上运行 Node 应用程序 我按照他们的步骤操作 但在显示应用程序状态时仍然遇到错误 我跟着Node js 入门 https devcenter heroku com articles
  • Github 操作错误地认为变量是秘密,因此不设置输出

    我的工作流程文件中的一个步骤将返回我的 aws 账户中 EC2 实例的一些 ID 然后我将这些 ID 设置为 github 输出 以便在我的工作流程文件中的其他作业中使用 我在许多工作流程中都这样做了 步骤将返回如下内容 i 0d945b0
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 如果您使用 CocoaPods,您的 .gitignore 中会包含什么内容?

    我从事 iOS 开发已经几个月了 刚刚了解到有前途的可可豆荚 http cocoapods org 用于依赖管理的库 我在个人项目上尝试过 添加了依赖项Kiwi https github com allending Kiwi到我的 Podf
  • git am 和 git apply 有什么区别?

    Both git am https git scm com docs git am and git apply https git scm com docs git apply可用于应用补丁 看起来git am自动提交 而git apply
  • 为什么从网上下载Git 2.0,总是得到1.9.4的安装包?

    为什么从网上下载Git 2 0 总是得到1 9 4的安装包 为什么你不能在互联网上的任何地方找到一个不仅标记为 2 0 而且你下载的安装存档也标记为这样的 Git 安装程序包 例如 这个2 1 3 站点 http git scm com d
  • GitHub API 获取用户/组织总数

    Using GitHub API https developer github com v3 如何计算请求时的用户 组织总数 Users https developer github com v3 users and 组织机构 https
  • 如何使用 git 找到一个分支中但不在另一个分支中的所有提交?

    我有两个分行master and live Master是发展 分支并包含尚未准备好进入的提交live 如果在master需要进入的分支live树枝然后他们被樱桃采摘master to live 有时会做出承诺live分支然后是 樱桃摘入m
  • 使用nodegit切换分支/标签

    我整个早上都在尝试打开现有的存储库并使用 nodegit 更改分支或标签 文档内容很丰富 但似乎已经过时了 关于我做错了什么有什么想法吗 var NodeGit require nodegit var open NodeGit Reposi
  • git 清除远程仓库

    如果我将错误的初始提交 或多个 推送到远程存储库 并且只想清除 销毁它 我可以通过命令来完成吗 将其从服务器中完全删除非常重要 这样它就不会占用磁盘空间 例如 今天我推送了一个完整的 Visual Studio 项目 其中包含 dll sd

随机推荐

  • keras序列化模型 to json文件,保存模型和加载模型

    首先保存 1 模型结构 2 模型参数数据 usr bin env python coding utf 8 Author Jia ShiLin 模型的权重保存在HDF5中 模型的结构保存在JSON文件或者YAML文件中 Keras提供了to
  • Dbus数据总线(基于0.5.0) 深入理解,源码适配修改编译全过程,集群部署,使用操作

    声明 本文基于2018年10月份 发版的0 5版本进行安装实验 dbus产生背景 首先了解下当下的采集工具 1 我们发现 采集工具都有各自的优点和应用场景 但是都缺乏统一的数据源端管控 所以无法找到统一的数据入口 2 各个数据使用方在业务低
  • .ajax判断参数,vue.js获取ajax参数

    vue js获取ajax参数 内容精选 换一换 获取标签所有技术栈您可以在API Explorer中调试该接口 GET v2 stacks状态码 200状态码 403状态码 404状态码 406状态码 500获取标签所有技术栈状态码 200
  • 基于ARM Cortex-M0+内核的bootloader程序升级原理及代码解析

    本文主要讲述BootLoader程序升级原理及一些代码的解析 力图用通俗易懂的语言描述清楚BootLoader升级的主要关键点 BootLoader 升级原理概述 首次接触这一块时 有一个概念叫IAP 在应用编程 通俗一点讲便是通过一段已有
  • Latex公式自动编号与自动引用

    在进行latex引用时 有两种办法 一 被动引用 如有这样一段代码 x 2 y 2 z 2 eqno 1 1 In this paper we investigated 1 1 and applied it into some fields
  • 图论(四)宽度优先搜索BFS

    宽度优先搜索 BFS Breadth First Search 是一个针对图和树的遍历算法 发明于上世纪50年代末60年代初 最初用于解决迷宫最短路径和网络路由等问题 对于下面的树而言 BFS方法首先从根节点1开始 其搜索节点顺序是1 2
  • keepalived-lvs-nat-主备模型实现高可用负载均衡

    keepalived简介 Keepalived的作用是检测web服务器的状态 如果有一台web服务器死机 或工作出现故障 Keepalived将检测到 并将有故障的web服务器从系统中剔除 当web服务器工作正常后Keepalived自动将
  • 移远公司 NB-IoT模块AT指令详细解释

    AT指令的分类和格式 AT指令分测试指令 读取参数指令 设置参数指令 执行命令指令四类 参见下表 命令 命令名称 命令功能 AT lt CMD gt 测试命令 询问模块支持哪些设置参数或者是那些项目 AT lt CMD gt 读取命令 读取
  • 2.数据定义语言DDL

    一 数据库定义语言 DDL Data Definition Language 是用于描述数据库中要存储的现实世界实体的语言 主要由create 添加 alter 修改 drop 删除 和 truncate 删除 四个关键字完成 二 crea
  • 服务器的软件架构

    1 服务器的整体架构 x86 2 服务器的软件整体架构 x86 3 服务器的软件介绍BIOS POST CPU 内存 外设初始化与资源分配 BIOS Setup 英文 中文 CPU Performance SATA等接口控制 BIOS BM
  • JS Date日期的使用

    Date 分两大系列 1 get系列 及获取时间 2 set系列 及设置时间 1 get系列的方法 1 getDate 返回一月中的某一天 2 getDay 返回一周中的某一天 0 6 0代表周日 6代表周一 3 getFullyear 返
  • 架构师分享 7 种软件设计架构 (文末送书)

    文末留言送书5本 架构模式是对给定上下文的软件架构中常见问题的一种通用的可复用的解决方案 一种模式就是特定上下文的问题的一种解决方案 然而 很多开发者至今还对各种软件架构模式之间的差别搞不清 甚至对其所知甚少 大体上 主要有下面这7种架构模
  • Haskell学习——语法

    if then else Haskell是以表达式为主导的语言 expression oriented 所有语句必须要能给出一个具体的值 比如我们喜闻乐见的if else结构 Prelude gt if True then 1
  • 《数值分析》-- 高斯求积公式

    文章目录 概述 一 高斯型求积公式的一般理论 1 1 高斯型求积公式和高斯点 1 2 高斯点的特征 二 常用的高斯求积公式 2 1 高斯 勒让德求积公式 Gauss Legendre 2 2 高斯 切比雪夫求积公式 Gauss Chebys
  • 让生产力加倍的ChatGPT快捷指令

    我的新书 Android App开发入门与实战 已于2020年8月由人民邮电出版社出版 欢迎购买 点击进入详情 Why use ChatGPT Shortcut 简化流程 ChatGPT Shortcut 提供了快捷指令表 可以快速筛选和搜
  • OpenGL视频资料(LearnOpenGL中文)经典教材讲解

    OpenGL视频资料 LearnOpenGL中文 经典教材讲解 1 是中文 台湾的傅老师 讲的非常好 而且还是免费的 感谢傅老师的分享 视频地址 2 视频目录 讲解的非常仔细 可以说是手把手教 而且是openGL经典入门教材LearnOpe
  • [Python] Python基础入门笔记

    本篇是B站Python基础视频 有C Java编程基础容易理解 120分钟入门Python的学习笔记 Python基础笔记 一 Python 简介 1 Python执行过程 2 执行模式 二 语法规则 三 函数 1 内置函数 range 2
  • java基础练习—逢七游戏、不死神兔、百钱百鸡、利滚利

    1 逢七游戏 逢七过 规则是 从任意一个数字开始报数 当你要报的数字包含7或者是7 的倍数时都要说 过 为了帮助大家更好的玩这个游戏 这里我们直接在控制台打印出1 100之间的满足逢七必过 规则的数据 package com bdit pu
  • ThinkCentre进入BIOS,设置intel virtualization technology

    VMware安装提示cpu虚拟化intel virtualization technology ThinkCentre重启长按F1 按enter 开启intel virtualization technology F10保存即可 转载于 h
  • git团队开发使用流程概述和注意点

    重新温习了一下git 这篇文章主要总结一下使用git做开发的整体流程 所以不会做过多的git指令的详细说明 整体流程 这里我在本地进行模拟 我希望模拟达到的效果是 一共有4个端 project是一个仓库 manager是项目负责人 zs和l