Git
版本控制的起源
现在的软件项目通常是由一个研发小组共同分析、设计、编码、维护以及测试的
针对团队开发需要解决以下问题:
- 备份多个版本,费空间,费时间
- 难于恢复至以前正确版本
- 容易引发 BUG
- 解决代码冲突困难
- 代码管理混乱
- 难于追溯问题代码的修改人和修改时间
- 无法进行权限控制
- 项目版本发布困难
源代码管理工具就是为了解决上述问题应运而生的
什么是版本控制
什么是版本控制?
- 版本控制的英文是 Version control;
- 是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程;
- 版本控制也是一种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同一程序文件都得到同步;
简单来说,版本控制在软件开发中,可以帮助程序员进行代码的追踪、维护、控制等等一系列的操作。
是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统
如果是开发团队中的一员,使用版本控制是强制性的!
- 如果是单人开发,也强烈建议现在就开始使用版本控制!
使用版本控制可以:
- 不会对现有工作造成任何损害
- 不会增加工作量
- 添加新的功能拓展时,会变得更加容易
版本控制的功能
- 对于我们日常开发,我们常常面临如下一些问题,通过版本控制可以很好的解决:
- 不同版本的存储管理:
- 一个项目会不断进行版本的迭代,来修复之前的一些问题、增加新的功能、需求,甚至包括项目的重构;
- 如果我们通过手动来维护一系列的项目备份,简直是一场噩梦;
- 重大版本的备份维护:
- 对于很多重大的版本,我们会进行备份管理;
- 恢复之前的项目版本:
- 当我们开发过程中发生一些严重的问题时,想要恢复之前的操作或者回到之前某个版本;
- 记录项目的点点滴滴:
- 如果我们每一个功能的修改、bug 的修复、新的需求更改都需要记录下来,版本控制可以很好的解决;
- 多人开发的代码合并:
- 项目中通常都是多人开发,将多人代码进行合并,并且在出现冲突时更好的进行处理;
- 不同版本的存储管理:
常见版本控制工具
版本控制工具发展
版本控制的史前时代(没有版本控制):
- 人们通常通过文件备份的方式来进行管理,再通过 diff 命令来对比两个文件的差异;
CVS(Concurrent Versions System)
第一个被大规模使用的版本控制工具,诞生于 1985 年;
- 由荷兰阿姆斯特丹 VU 大学的 Dick Grune 教授实现的,也算是 SVN 的前身(SVN 的出现就是为了取代 CVS 的)。
SVN(Subversion)
- 因其命令行工具名为 svn 因此通常被简称为 SVN;
- SVN 由 CollabNet 公司于 2000 年资助并发起开发,目的是取代 CVS,对 CVS 进行了很多的优化;
- SVN 和 CVS 一样,也属于集中式版本控制工具;
- SVN 在早期公司开发中使用率非常高,但是目前已经被 Git 取代;
GIT 分布式版本控制之伟大作品
- 早期的时候,Linux 社区使用的是 BitKeeper 来进行版本控制;
- 但是因为一些原因,BitKeeper 想要收回对 Linux 社区的免费授权;
- 于是 Linus 用了大概一周的时间,开发了 Git 用来取代 BitKeeper;
- Linus 完成了 Git 的核心设计,在之后 Linus 功成身退,将 Git 交由另外一个 Git 的主要贡献者 Junio C Hamano 来维护;
- GIT:一款
分布式
源代码管理工具,目前国内企业几乎都已经完成了从 SVN 到 GIT 的转换
Git 和 SVN 的对比
速度
- 在很多情况下,git 的速度远远比 SVN 快
结构
- SVN 是集中式管理,git 是分布式管理
其他
- SVN 使用分支比较笨拙,git 可以轻松拥有无限个分支
- SVN 必须联网才能正常工作,git 支持本地版本控制工作
- 旧版本的 SVN 会在每一个目录置放一个 .svn,git 只会在根目录拥有一个 .git
集中式版本控制
- CVS 和 SVN 都是是属于集中式版本控制系统(Centralized Version Control Systems,简称 CVCS)
- 它们的主要特点是单一的集中管理的服务器,保存所有文件的修订版本;
- 协同开发人员通过客户端连接到这台服务器,取出最新的文件或者提交更新;
- 这种做法带来了许多好处,特别是相较于老式的本地管理来说,每个人都可以在一定程度上看到项目中的其他人正在做些什么。
- 但是集中式版本控制也有一个核心的问题:中央服务器不能出现故障:
- 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作;
- 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据;
分布式版本控制
Git 是属于分布式版本控制系统(Distributed Version Control System,简称 DVCS)
- 客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录;
- 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复;
- 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份;
目前在公司开发中我们都是使用 Git 来管理项目的,所以接下来我们会重点学习 Git 的各种用法;
- 分布式和集中式的区别
- 在集中式下, 开发者只能将代码提交到服务器, 在分布式下, 开发者可以本地提交
- 在集中式下, 只有远程服务器上有代码数据库, 在分布式下, 每个开发者机器上都有一个代码数据库
Git 和 GitHub 的区别
- git 是版本控制软件,一般用来做代码版本控制
- github 是一个免费版本控制仓库,是国内外很多开源项目的集中地,其本体是一个 git 服务器
Git 简介
GIT 是一款自由和开源的
分布式
版本控制系统,用于敏捷高效
地处理任何或小或大的项目在世界上所有的分布式版本控制工具中,
git是最快、最简单、最流行的
是 Linux 之父李纳斯的第二个伟大作品
- 2005 年由于 BitKeeper 软件公司对 Linux 社区停止了免费使用权。
- Linus 为了辅助 Linux 内核的开发(管理源代码),迫不得己自己开发了一个分布式版本控制工具,从而 Git 诞生了
Git 的工作原理
Git 的工作原理
如果想学好 GIT 必须先了解 GIT 的工作原理
工作区(Working Directory): 仓库文件夹里面, 除了
.git目录
以外的内容,(工作区:就是包含有 .git 文件夹 的文件夹)版本库(Repository):.git 目录, 用于存储记录版本信息
- 版本库中的暂缓区(staga):
- 版本库中的分支(master): git 自动创建的第一个分支
- 版本库中的**HEAD 指针:**用于指向当前分支
git add 和 git commit 作用
- git add: 把文件修改添加到暂缓区
- git commit: 把暂缓区的所有内容提交到当前 HEAD 指针指向的分支
Git 的使用环境
下载安装 Git
- 电脑上要想使用 Git,我们需要先对 Git 进行安装:
- Git 的官网:https://git-scm.com/downloads
- 根据自己的操作系统下载 Git 即可;
在 window 操作系统按照默认配置全局安装即可;
验证 Git 是否安装成功:
- 终端中输入指令
git --version
,回车,显示 Git 版本即为安装成功 - 在文件夹中,右键菜单中出现
Git GUI Here
和Git Bash Here
这两个选项,即为安装成功
- 终端中输入指令
Bash–CMD–GUI 区别
- Bash,Unix shell 的一种,Linux 与 Mac OS X 都将它作为默认 shell。
- Git Bash 就是一个 shell,是 Windows 下的命令行工具,可以执行 Linux 命令;
- Git Bash 是基于 CMD 的,在 CMD 的基础上增添一些新的命令与功能;
- 所以建议在使用的时候,用 Bash 更加方便;
- Git CMD
- 命令行提示符(CMD)是 Windows 操作系统上的命令行解释程序;
- 当你在 Windows 上安装 git 并且习惯使用命令行时,可以使用 cmd 来运行 git 命令;
- Git GUI
- 基本上针对那些不喜欢黑屏(即命令行)编码的人;
- 它提供了一个图形用户界面来运行 git 命令;
- 上课演练的方式:
- 在 Git Bash 中演练 Git 的常见操作;
Git 的使用-单人开发
帮助手册
- 在 Git 中输入:
git help
,通过 git 指令查看帮助手册- 查看其他指令的做法:git help 其他指令
添加全局配置信息
既然已经在系统上安装了 Git,你会需要做几件事来定制你的 Git 环境:
- 每台计算机上只需要配置一次,程序升级时会保留配置信息;
- 你可以在任何时候再次通过运行命令来修改它们;
Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量:
- /etc/gitconfig 文件:包含系统上每一个用户及他们仓库的通用配置
- 如果在执行 git config 时带上 –system 选项,那么它就会读写该文件中的配置变量;
- 由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。(开发中通常不修改)
- ~/.gitconfig 或 C/用户/coderwhy/.gitconfig 文件:只针对当前用户
- 你可以传递 –global 选项让 Git 读写此文件,这会对你系统上 所有 的仓库生效;
- 当前使用仓库的 Git 目录中的 config 文件(即 .git/config):针对该仓库
- 你可以传递 –local 选项让 Git 强制读写此文件,虽然默认情况下用的就是它;
- /etc/gitconfig 文件:包含系统上每一个用户及他们仓库的通用配置
查看当前的所有配置信息:
git config -l
在项目开发中必须要添加以下两个配置项,不然会挨打
- 在 Git 中输入
git config user.name "123@qq.com"
添加用户名为 123@qq.com 的全局配置信息 - 在 Git 中输入
git config user.email "123@qq.com"
添加邮箱信息为 123@qq.com 的全局配置信息
- 在 Git 中输入
删除全局配置信息
- 在 Git 中输入
git config --global --unset user.name
即可删除指定的 user.name 全局配置信息
git 的别名
- Git 并不会在你输入部分命令时自动推断出你想要的命令:
- 如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松地为每一个命令设置一个别名。
- 例如 :
git config --global alias.co checkout
, 配置 checkout 的快捷指令为 co
仓库克隆
- 从 Git 远程仓库克隆到本地 :
git clone https://github.com/coderwhy/hy-react-web-music.git
git config credential.helper
出现manager-core
仓库初始化
- 该命令将创建一个名为 .git 的子目录(这个子目录默认是隐藏的) , 这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的核心;
- 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪;
- 在 Git 中输入 git init 进行仓库初始化(个人仓库) ,使用 Git 仓库前,必须要先初始化仓库
- 在 Git 中输入 git config -l 查看当前所有的配置信息
- 在 Git 中输入 clear ,清空屏幕
查看文件状态
现在我们的电脑上已经有一个 Git 仓库:
- 在实际开发中,你需要将某些文件交由这个 Git 仓库来管理;
- 并且我们之后会修改文件的内容,当达成某一个目标时,想要记录下来这次操作,就会将它提交到仓库中;
那么我们需要对文件来划分不同的状态,以确定这个文件是否已经归于 Git 仓库的管理:
- 未跟踪:默认情况下,Git 仓库下的文件也没有添加到 Git 仓库管理中,我们需要通过 add 命令来操作;
- 已跟踪:添加到 Git 仓库管理的文件处于已跟踪状态,Git 可以对其进行各种跟踪管理;
在 Git 中输入
git status
:查文件的状态, 文件名为红色的文件,就是该文件未添加到暂存区,即没有被跟踪- 查看某个文件的状态:
git status 文件名
- 查看当前路径所有文件的状态:
git status
- 也可以使用更加简洁的状态信息 :
git status -S
git status --short
- 查看某个文件的状态:
已跟踪的文件又可以进行细分状态划分:
- staged:暂缓区中的文件状态;
- Unmodified:commit 命令,可以将 staged 中文件提交到 Git 仓库
- Modified:修改了某个文件后,会处于 Modified 状态;
在工作时,你可以选择性地将这些修改过的文件放入暂存区;
然后提交所有已暂存的修改,如此反复;
添加到暂缓区
- 在 Git 中输入
git add
指令, 将工作区的文件保存到暂缓区- 保存单个文件到暂缓区:
git add 文件名
如:git add index.js
,开始跟踪一个文件- 如果我们已经跟踪了某一个文件,这个时候修改了文件也需要重新添加到暂存区中;
- 保存当前路径的所有文件到暂缓区:
git add .
(注意,最后是一个点 . )
- 保存单个文件到暂缓区:
- 在 Git 中输入
git status
:查文件的状态 文件名为绿色的文件,就是该文件已经添加到暂存区
提交到版本库
提交单个/多个文件
- 在 Git 中通过
git commit
指令将暂缓区的文件提交到当前分支(默认 head 指针指向 master 主分支)- 提交某个文件到分支:
git commit -m "注释" 文件名
如:git commit -m "初始化仓库 添加main.js" main.js
- 保存当前路径的所有文件到分支:
git commit -m ”注释”
如git commit -m "初始化仓库 添加main.js"
- 如果我们修改文件的 add 操作,加上 commit 的操作有点繁琐,那么可以将两个命令结合来使用:
git commit -a -m "修改了bbb文件"
- 提交某个文件到分支:
- 在 Git 中输入
git status
:查文件的状态 没有再输出文件名,说明所有文件已经被 Git 管理
修改最近一次提交信息
- 修改最近一次的提交信息 : git commit –amend -m “要修改并提交的新的提交信息”
- 该操作会生成一个全新的 commit 对象,修改最近一次的提交信息 , 状态码也会更新
- 注意点:
- 不是写一句代码就 add commit 一次,应该是完成一个功能后再 add commit
- commit -m 时,注释一定要认真编写,与当前提交内容保持一致,否则要挨打
合并提交时落下的文件
- 将提交时落下的文件合并到最近一次提交 :
- git commit –amend –no-edit
- 把某个改动并入
最近一次的 commit
, 落下的文件,也要先添加到暂存区,提交时才能合并进去 --no-edit
的意思是不要编辑 commit 信息
- 把某个改动并入
- git commit –amend –no-edit
忽略某些文件不追踪
新增
.gitignore
文件,在该文件中写上不需要追踪的文件或文件夹名称,再将该文件提交到版本库即可,后续章节有详细讲解git 操作流程图:
查看修改内容
查看文件被修改的内容
git diff
:查看文件最新改动的地方- 查看某个文件的最新改动的地方:
git diff 文件名
- 查看当前路径所有文件最新改动的地方:
git diff
- 查看某个文件的最新改动的地方:
在 Git 中输入
git diff main.js
,即可查看指定文件 main.js 被修改了那些内容- 被绿色标记的代码,就是新增的代码
- 需要重新添加到暂缓区和重新提交到当前分支,才能重新被 git 管理
查看文件的修改日志
查看单个文件的修改历史
- 在 Git 中输入
git log main.js
查看指定文件的修改历史
- 在 Git 中输入
查看当前路径所有文件的修改日志
- 在 Git 中输入
git log
查看所有文件的修改历史
- 在 Git 中输入
查看指定人员的修改历史记录 : git log –author=”289 snail”
- 注意 : 所有人员名字中包含查找的关键字(比如查找 snail ),则(snail , 289 snail )也会被查找出来
查找提交信息中的是否包含指定关键字: git log –grep=”首页”
在 Git 中输入
git log --pretty=online
在一行显示查看的所有文件的修改历史简略查看所有的修改历史
- 在 Git 中输入
git reflog
简略查看所有文件的修改历史,如: ( head 指针指向的是当前版本)
- 在 Git 中输入
1 | 2659505 (HEAD -> master) HEAD@{0}: commit: 给main.js添加输出语句 |
- 用一行的方式查看简单的日志信息:
git log ––pretty=oneline
- 查看最近的 N 次修改:
git log –N
(N 是一个整数)
版本回退
回到上一个版本
- 在 Git 中输入
git reset --hard HEAD^
即可回退到上一个版本 git reset
:版本回退(建议加上––hard 参数,git 支持无限次后悔)- 回退到上一个版本:
git reset ––hard HEAD^
- 回退到上上一个版本:
git reset ––hard HEAD^^
- 回退到上 N 个版本:
git reset ––hard HEAD~N(N是一个整数)
- 回退到任意一个版本:
git reset ––hard 版本号(版本号用7位即可)
- 回退到上一个版本:
恢复到指定版本
- 在 Git 中输入
git reset --hard 版本号
即可恢复到指定版本号的版本,如:git reset --hard 2659505
,版本号在简略查看修改历史中显示
添加忽略文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。
- 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等;
- 我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件的模式;
在实际开发中,这个文件通常不需要手动创建,在必须的时候添加自己的忽略内容即可;
比如右侧是创建的 Vue 项目自动创建的忽略文件:
- 包括一些不需要提交的文件、文件夹;
- 包括本地环境变量文件;
- 包括一些日志文件;
- 包括一些编辑器自动生成的文件;
在 Git 中输入
touch .gitignore
即可在当前目录添加忽略文件
1 | ## 表示此为注释,将被Git忽略 |
单人开发总结
单人流程:
01 准备工作(只做一次):
- 1 创建一个工作区
- 2 在工作区中的打开 git 终端
- 3 通过 git init 指令, 初始化版本库
- 4 通过 git config user.name “姓名” 和 git config user.email “邮箱” 设置用户名和邮箱(不设置要挨骂)
- 5.通过 git config -l 查看设置情况
02 开发阶段(反复执行)
1 编写代码
2 通过 git add 文件名称 和git add . 添加到版本库的暂缓区中
3 通过 git commit -m “说明” 将暂缓区的文件添加到 HEAD 指针指向的分支中 (默认只有一个分支, master 分支, 也称之为主分支)
注意点:
1 不是写一句代码就 add commit 一次, 应该是完成一个功能后再 add commit
2 commit 时,注释一定要认真编写, 与当前提交内容保持一致, 否则要挨骂
单人使用 Git 管理项目好处:
- 1 可以通过 git status 查看哪些文件没有被管理, 修改了哪些文件 红色(没有被管理或者被修改了)、绿色(在暂缓区)
- 2 可以通过 git diff 查看具体修改了哪些代码
- 3 可以通过 git log / git reflog 查看项目演变历史
- 4 可以通过 git reset –hard 版本号 在任意版本之间切换
- 5 无需备份多个文件, 每次 commit 提交 Git 会自动备份
Git 的使用-团队开发
管理员创建远程库
一、项目管理员在远程服务器上创建一个共享版本库
1 项目负责人打开远程的服务器, 然后创建一个工作区
2 在远程的服务器上打开工作区, 在工作区中打开 Git 终端工具
3 在 Git 终端工具中输入指令
git init --bare
4 经过以上几步, 就代表远程服务器上的共享版本库已经创建好了
开发人员下载远程库
- 二、开发人员下载远程版本库
- 1 开发人员在自己的电脑上打开 Git 终端工具
- 2 从远程的服务器上下载当前项目的共享版本库
git clone 远程服务器共享版本库地址
- 3 和单人开发使用 Git 的区别: 单人开发是自己创建版本库, 而多人开发是从远程服务器下载版本库
进入开发阶段
三、进入开发阶段
和单人开发一样
1 设置用户名和邮箱
- 在 Git 中输入
git config user.name "123@qq.com"
添加用户名为 123@qq.com 的全局配置信息 - 在 Git 中输入
git config user.email "123@qq.com"
添加邮箱信息为 123@qq.com 的全局配置信息 - 或者设置当前 git 仓库的用户名和邮箱 :
git config --local user.name "xiaoming"
,git config --local user.email "xiaoming@163.com
, 这样在提交代码时,Git 就知道是谁提交的了。
- 在 Git 中输入
2 编写代码
3 添加到暂缓区
保存单个文件到暂缓区:
git add 文件名
如:git add index.js
保存当前路径的所有文件到暂缓区:
git add .
(注意,最后是一个点 . )
4 添加到 HEADER 指针指向的分支
- 提交某个文件到分支:
git commit -m ”注释” 文件名
如:git commit -m "初始化仓库 添加main.js" main.js
- 保存当前路径的所有文件到分支:
git commit -m ”注释”
如git commit -m "初始化仓库 添加main.js"
- 提交某个文件到分支:
5 注意点:
commit 是将编写好的代码提交到本地的版本库, 所以此时其它的开发人员还拿不到我们提交的代码的
如果想让其它开发人员也能拿到我们提交的代码, 还必须将编写好的代码提交到远程的服务器
6 将代码提交到远程的服务器 git push
7 其它的开发人员只需要通过 git pull 就可以拿到更新的代码了
开发注意点
- 多人开发使用 Git 注意点:
- 1 不能将不能运行的代码提交到本地和远程服务器(切记一定不能)
- 2 如果服务器上有其它开发人员的更新内容, 那么我们不能直接通过
git push
将我们的代码提交到服务器 - 3 如果服务器上有其它开发人员更新的内容, 我们必须先将其它开发人员更新的内容,
git pull
更新到本地之后, 才能通过 push 提交我们的内容 - 4 如何我们更新的内容和其它同事更新的内容有冲突(修改了同一个文件的同一行代码), 这个时候需要我们自己手动修改冲突, 修改完冲突之后才能将代码提交到远程服务器
开发技巧
- 开发技巧:
- 只要开发完了一个功能就要立即提交代码, 因为在企业开发中谁后提交谁就负责解决冲突, 谁的工作量就会变大
分支的使用
查看分支
一、如何查看有多少个分支?
- 1 通过
git branch
指令就可以查看当前版本库中有多少个分支
- 1 通过
注意点:
1 如果当前的版本库是空的, 那么无法查看
2 如果通过
git branch
指令查看当前版本库中有多少个分支, 输出的内容中哪一个分支前面有*号,就代表当前的 HEADER 指针指向哪一个分支, 我们提交的代码就会提交到指向的分支中
创建分支
- 二、如何创建一个分支
- 1 通过 git branch 分支名称 来创建一个新的分支,如:
git branch Dev
- 1 通过 git branch 分支名称 来创建一个新的分支,如:
- 注意点:
- 在哪个分支中创建了新的分支, 那么创建出来的新的分支就会继承当前分支的所有状态
- 例如:
- 在 master 分支中做了两个操作, 然后在 master 分支中创建了 Dev 分支,那么创建出来的 Dev 分支就会继承 master 分支中的这两个操作
- 注意点:
- 一旦分支被创建出来之后, 分支就是独立的, 分支之间不会相互影响
重命名分支
- 指令 :
git branch -m 旧分支名 新分支名
- 例如 :
git branch -m snail dev
- 例如 :
切换分支
- 三、如何切换分支
- 通过 git switch 分支名称 来修改 HEADER 指针的指向,如:
git switch Dev
- 或者
git checkout Dev
都可以
- 或者
- 通过 git switch -b 分支名称 来创建新分支并切换到新的分支:
- 如果这个分支本来就存在,git 会提示该分支已经存在;
- 如果不存在,git 会创建改分支后再切换过去。
- 注意点:
- 只要 HEADER 指针的指向发生了改变, 那么 commit 的代码就会发生改变,
- HEADER 指针指向谁 commit 提交的代码就提交到谁里面
- 切换的分支要是已经存在,切换的分支不存在会报错
- 通过 git switch 分支名称 来修改 HEADER 指针的指向,如:
提交分支
四、如何将分支提交到远程服务器
1 通过
git branch -r
来查看远程服务器上有多少个分支2 首先需要在本地切换到新建的分支中, 然后通过
git push
指令提交新建的分支到远程的服务器git push --set-upstream origin Dev
合并分支
五、如何合并分支
- 可以通过 git merge 分支名称 来合并分支
- 例如:
- 在 master 分支中执行
git merge Dev
就代表需要将 Dev 分支中的代码都合并到 master 分支中
- 在 master 分支中执行
- 例如:
- 在 Dev 分支中执行
git merge master
就代表需要将 master 分支中的代码都合并到 Dev 分支中
- 在 Dev 分支中执行
删除分支
- 六、如何删除分支
- 1 可以通过 git branch -d 分支名称 来删除本地的分支,如:
git branch -d Dev
- 注意: 要先切换到其他分支,才可以删除指定分支, 不能自杀
- 2 可以通过 git push origin –delete 分支名称 来删除远程服务器的分支,如:
git push origin --delete Dev
- 1 可以通过 git branch -d 分支名称 来删除本地的分支,如:
Gitflow 工作流程
- Gitflow 工作中的 6 条分支:
准备阶段
- 一、准备阶段:
- 1 初始化远程工作区和共享版本库
- 2 项目经理初始化项目, 并在 master 定制标记
- 在
git push
之前,可以用过git tab -a v0.1 -m "初始化项目"
添加标记,通过git tab
查看标记
- 在
- 3 将 master 分支提交到远程服务器
git push
- 4 项目经理基于 master 分支创建 develop 分支
git branch Develop
- 5 项目经理将新建的分支提交到远程的服务器
- 切换到新建的分支:
git switch Develop
- 将分支提交到远程服务器:
git push
- 切换到新建的分支:
- 6 项目经理给开发人员分配工作任务
开发阶段
- 二、开发阶段
- 1 开发人员基于 develop 分支创建功能分支
- 2 开发人员在自己的分支上 add commit push
- 3 开发完成告诉项目经理, 由项目经理审核代码并合并代码到 develop
准备上线阶段
- 三、准备上线阶段
- 1 项目经理基于 develop 分支创建 release 分支
- 2 测试人员获取 release 分支代码进行测试
- 3 发现 bug 由开发人员基于 release 分支创建 bugfix 分支进行修复
- 4 修复完成后重新合并到 release 分支
- 5 将测试和修复完所有 bug 的最终代码合并到 master 分支和 develop 分支
正式上线阶段
- 三、正式上线阶段
- 1 项目经理给 master 分支制定标记
- 2 项目经理将标记提交到远程服务器:
git push origin v1.0
- 3 项目完成上线
项目上线之后
- 四、上线之后
- 1 项目上线后如果出现了紧急 bug
- 2 基于 master 分支创建 hotfix 分支, 在该分支上修复 bug
- 3 修复完成后重新合并到 master 分支和 develop 分支
- 4 项目经理在 master 分支定制标记
Gitee 的使用
Gitee 的注册与登陆
创建仓库
配置 SSH 公钥
- 1 生成 SSH 公钥
- 在 Git 中输入
ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"
,三次回车,即可生成公钥(后面的邮箱仅作为标识) - 2 查看 SSH 公钥
- 在
C:\Users\online289\.ssh
目录中的id_ed25519.pub
文件中查看生成的 SSH 公钥 - 3 添加 SSH 公钥
- 将生成的公钥复制,在 Gitee 中设置/SSH 公钥中添加公钥
- 4 在终端中输入
ssh -T git@gitee.com
, 出现 hai~xxx 即配置完成
Git 的全局配置
1 | 添加全局配置,必须添加,否则会挨骂 |
创建 git 仓库
1 | mkdir vue3-black-horse-rabbit-fresh # 创建项目目录 |
已有仓库连接远程库
1 | cd existing_git_repo # 进入项目 |
- 感谢你赐予我前进的力量