git 流程概要

零、一些有用的资料

1. [生成/添加SSH公钥](https://gitee.com/help/articles/4181#article-header0)
2. [https://nvie.com/posts/a-successful-git-branching-model/](https://nvie.com/posts/a-successful-git-branching-model/)
3. [git tag命令](https://www.jianshu.com/p/cdd80dd15593)

一、单人开发(作为个人开发版本管理)

单人流程:
    一、准备工作(只做一次):
    1.创建一个工作区 mkdir dirName
    2.在工作区中的打开git终端
    3.通过git init指令, 初始化版本库,可得到.git隐藏文件夹目录
    4.通过git config user.name "姓名"
          git config user.email "邮箱"
      设置用户名和邮箱(不设置要挨骂),同时作为个人电脑,可配置全局用户以及邮箱
           git config --global user.name "Your Name"
           git config --global user.email "email@example.com"
    5.通过git config -l查看设置情况
    二、开发阶段(反复执行)
    1.编写代码
    2.通过"git add 文件名称"/"git add ." 添加到版本库的暂缓区中
    3.通过git commit -m"说明" 将暂缓区的文件添加到HEAD指针指向的分支中
    (默认只有一个分支, master分支, 也称之为主分支)
    注意点:
        3.1.不是写一句代码就add commit一次, 应该是完成一个功能后再add commit
        3.2.commit时-m注释一定要认真编写, 与当前提交内容保持一致, 否则要挨骂

单人使用Git管理项目好处:
    1.可以通过git status查看哪些文件没有被管理, 修改了哪些文件
      红色(没有被管理或者被修改了)、绿色(在暂缓区)
    2.可以通过 git diff查看具体修改了哪些代码
    3.可以通过git log / git reflog查看项目演变历史
    4.可以通过git reset --hard 版本号  在任意版本之间切换
    5.无需备份多个文件, 每次commit提交Git会自动备份

二、多人开发(项目小组或团队)

多人开发:
一、在远程服务器上创建一个共享版本库
    1.项目负责人打开远程的服务器, 然后创建一个工作区
    2.在远程的服务器上打开工作区, 在工作区中打开Git终端工具
    3.在Git终端工具中输入 git init --bare
    4.经过以上几步, 就代表远程服务器上的共享版本库已经创建好了
二、开发人员下载远程版本库
    1.开发人员在自己的电脑上打开Git终端工具
    2.从远程的服务器上下载当前项目的共享版本库  git clone 远程服务器共享版本库地址
      和单人开发使用Git的区别: 单人开发是自己创建版本库, 而多人开发是从远程服务器下载版本库
三、进入开发阶段
    和单人开发一样
    1.设置用户名和邮箱
    2.编写代码
    3.git add .添加到暂缓区
    4.git commit -m 添加到HEADER指针指向的分支
    5.注意点:
    commit是将编写好的代码提交到本地的版本库, 所以其它的开发人员是拿不到我们提交的代码的
    如果想让其它开发人员也能拿到我们提交的代码, 还必须将编写好的代码提交到远程的服务器

    多人开发特有
    6.将代码提交到远程的服务器 git push
    7.其它的开发人员只需要通过 git pull 就可以拿到更新的代码了

多人开发使用Git注意点:
    1.不能将不能运行的代码提交到本地和远程服务器(切记一定不能)
    2.如果服务器上有其它开发人员的更新内容, 那么我们不能直接通过push将我们的代码提交到服务器
      如果服务器上有其它开发人员更新的内容, 我们必须先将其它开发人员更新的内容更新到本地之后才能通过push提交我们的内容
    3.如果我们更新的内容和其它同事更新的内容有冲突(修改了同一个文件的同一行代码), 这个时候需要我们自己手动修改冲突, 修改完冲突之后才能将代码提交到远程服务器

三、git分支

一、如何查看有多少个分支?
    1.通过git branch指令就可以查看当前版本库中有多少个分支
    注意点:
    1.如果当前的版本库是空的, 那么无法查看
    2.如果通过git branch指令查看当前版本库中有多少个分支, 输出的内容中哪一个分支前面有*号
    就代表当前的HEADER指针指向哪一个分支, 我们提交的代码就会提交到指向的分支中

二、如何创建一个分支
    1.通过git branch 分支名称 来创建一个新的分支
    注意点:
    在哪个分支中创建了新的分支, 那么创建出来的新的分支就会继承当前分支的所有状态
    例如:
    在master分支中做了两个操作, 然后在master分支中创建了Dev分支
    那么创建出来的Dev分支就会继承master分支中的这两个操作
    注意点:
    一旦分支被创建出来之后, 分支就是独立的, 分支之间不会相互影响

三、如何切换分支?
    1.通过git switch 分支名称 来修改HEADER指针的指向
    注意点: 只要HEADER指针的指向发生了改变, 那么commit的代码就会发生改变
    HEADER指针指向谁commit提交的代码就提交到谁里面

四、如何将分支提交到远程服务器
    1.通过git branch -r 来查看远程服务器上有多少个分支
    2.首先需要在本地切换到新建的分支中, 然后通过git push指令提交新建的分支到远程的服务器
    git push --set-upstream origin Dev

五、如何合并分支
    可以通过 git merge 分支名称 来合并分支
    例如:
    在master分支中执行  git merge Dev 就代表需要将Dev分支中的代码都合并到master分支中
    例如:
    在Dev分支中执行 git merge master 就代表需要将master分支中的代码都合并到Dev分支中

六、如何删除分支
    1.可以通过git branch -d 分支名称 来删除本地的分支
    2.可以通过git push origin --delete 分支名称 来删除远程服务器的分支

四、gitflow流程

一、准备阶段
    1.初始化远程工作区和共享版本库
    git init --bare

    2.项目经理初始化项目, 并在master定制标记
    添加初始化文件
    git add .
    git commit -m
    git push
    git tag v0.1
    git push origin v0.1

    3.项目经理基于master分支创建develop分支
    git switch master
    git branch Develop
    git switch Develop
    git push

    4.项目经理给开发人员分配工作任务

二、开发阶段
    1.开发人员基于develop分支创建功能分支
    git branch feature/home
    git switch feature/login

    2.开发人员在自己的分支上add commit push

    3.开发完成告诉项目经理, 由项目经理审核代码并合并代码到develop
    git pull
    git switch feature/home  检查代码
    git switch Develop
    git merge feature/home
    git switch feature/login  检查代码
    git switch Develop
    git merge feature/login

三、准备上线阶段
    1.项目经理基于develop分支创建release分支
    git switch Develop
    git branch Release/v1.0

    2.测试人员获取release分支代码进行测试

    3.发现bug由开发人员基于release分支创建bugfix分支进行修复
    git pull
    git switch Release/v1.0
    git branch bugfix/issue32
    修复bug / add / commit

    4.修复完成后重新合并到release分支
    git switch Release/v1.0
    git merge bugfix/issue32
    git push

    5.将测试和修复完所有bug的最终代码合并到master分支和develop分支
    git switch Develop
    git merge Release/v1.0
    git switch master
    git merge Release/v1.0

四、项目上线
    1.项目经理在master分支定制标记
    git switch master
    git tag -a v1.0 -m"项目第一次上线"
    2.项目经理项目经理将标记提交到远程服务器
    git push origin v1.0

五、上线之后
    1.项目上线后发现紧急bug
    2.基于master分支创建hotfix分支, 在该分支上修复bug
    git switch master
    git branch hotfix/issue66
    修复bug / add / commit

    3.修复完成后重新合并到master分支和develop分支
    git switch Develop
    git merge hotfix/issue66

    4.项目经理重新在master分支定制标记
    git switch master
    git merge hotfix/issue66
    git tag v1.1
    git push origin v1.1


- master主分支:
    + 负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。
- develop开发分支:
    + 该分支记录相对稳定的版本,所有的feature分支都从该分支创建
- feature/* 特性(功能)分支:
    + 用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到 develop 分支。
- release/*发布分支:
    + 用于代码上线准备,该分支从develop分支创建,创建之后由测试发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支到master分支和develop分支。
- bugfix/* bug修复分支:
    + 用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,开发完成自测没问题后合并到 develop 分支后,删除该分支。
- hotfix/*紧急bug修复分支:
    + 该分支只有在紧急情况下使用,从master分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到master分支以便上线,同时需要再合并到develop分支。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快、最简...
    JonesCxy阅读 1,005评论 0 3
  • 这篇博文是自己在学习git过程中的思考总结。本文仅仅代表个人的看法,如有不妥地方还请本文文末留言。 😊 原文链接g...
    Ming_Hu阅读 1,054评论 4 18
  • Git教程 一、Git简介 1.1. Git的诞生1.2.集中式的vs分布式 二、安装Git 三、创建版本库 四、...
    曹渊说创业阅读 935评论 0 2
  • ## 一. git 概述 ### 1. git 简介? 1. 什么是git? > git是一款开源的分布式版本控制...
    Mr吴标阅读 1,504评论 0 2
  • CAS : Compare and swap ,是原子操作的一种。 CAS操作包含三个值,分别是 V(内存位置)...
    walker_liu_fei阅读 1,260评论 0 0