Git Flow

本文介绍了Git,对比了Git与SVN的区别,详细讲解了Git的配置、常用命令,并重点阐述了Git Flow开发分支模式,包括master、develop、feature、release和hotfix分支的用途。此外,还给出了工作流程示例和相关代码。
摘要由CSDN通过智能技术生成

1. Git 介绍

Git 是一个开源的分布式版本控制系统,用于快速且高效地处理小中大型项目。

Git 与 SVN 区别:

  • Git 是分布式的,SVN 不是。
  • Git 是按内容元数据方式存储,SVN 是按文件。
  • 分支不同,SVN 分支其实就是另一个版本。
  • Git 采用 SHA-1 哈希算法,确保内容完整性。

2. Git 配置

  • 下载地址,下载对应平台的最新版本,并进行安装。

  • 远端仓库,代码需要上传的服务器账户,此处以 github 举例,注册很简单,不再赘述。

  • 配置本地与远端连接:

    • 打开 Git Bash.exe

    • 使用 SSH 生成 RSA 密钥对,用于与远端通信。默认生成路径 (C:\user\xxx.ssh)

      ssh-keygen -t rsa -C "xx@xx.com"

    • 将生成的公钥添加到服务器上:
      在这里插入图片描述

    • 测试 SSH 通信是否正常:

      ssh -T git@github.com
      在这里插入图片描述

    • 添加身份标识

      git config --global user.name "xxx"//名称

      git config --global user.email "xxx@xx.com"//邮箱

3. Git 常用命令

  • 配置相关

    git config --global user.name "[name]"//设置你希望提交时显示的名称

    git config --global user.email "[email address]"//设置你希望提交时显示的邮箱

    git config --global color.ui auto//使能配色输出

  • 创建仓库

    git init [project-name]//创建一个新的名称为 project-name的本地仓库

    git clone [url]//从 url处下载一个完整的工程,包含所有的历史记录

  • 修改相关

    git status//查看当前仓库的状态,列出所有新加/删除的需要提交的文件列表

    git diff//比较尚未暂存的文件与上一次提交之间的差异

    git diff --staged//比较暂存区的文件与上一次提交之间的差异

    git add [file]//添加文件到暂存区

    git reset [file]//将暂存区指定的文件恢复到本地,但保留其内容

    git commit -m "[descriptive message]"//将暂存区的文件提交,并对本次提交简要概述

  • 分支相关

    git branch//显示当前仓库中的所有分支

    git branch [branch-name]//创建一个新的分支

    git checkout [branch-name]//切换到指定分支,并更新到新分支的工作目录

    git merge [branch]//将指定分支合并到当前分支

    git branch -d [branch-name]//删除指定分支

  • 文件操作

    git rm [file]//删除工作目录和暂存区的指定文件

    git rm --cached [file]//在版本控制中删除指定文件,本地保留

    git mv [file-origin] [file-renamed]//更改文件名,并将其添加到暂存区

  • 碎片保存

    git stash//暂时保存当前工作目录状态,常用于修复紧急 BUG

    git stash pop//恢复当前工作目录状态,常用于 BUG 修复完成,返回继续开发

    git stash list//显示所有暂时保存的列表

    git stash drop//丢弃掉最近一次的暂存更改

  • 提交记录

    git log//显示当前分支的提交记录列表

    git log --fllow [file]//显示文件的历史记录,包括重命名

    git diff [first-branch] [second-branch]//显示两个分支内容的差异

    git reset [commit]//撤销 commit之后的所有提交,保存本地更改

    git reset --hard [commit]//丢弃所有的历史记录,并返回到指定的提交

  • 同步相关

    git remote add origin [url]//关联远端仓库

    git pull --rebase origin master//获取远端仓库(如果远端仓库不为空, 则必须进行这一步, 否则后面提交会失败)

    git fetch [bookmark]//从远端仓库 bookmark下载所有的历史记录

    git merge [bookmark]/[branch]//将远端仓库的指定分支合并到本地的当前分支

    git push [alias] [branch]//将本地的当前分支提交到远端的指定分支

    git pull//从远端下载最新代码并与本地合并

4. Git Flow

[外链图片转存失败(img-Lf82O6zU-1569049180742)(E:\Snipaste_2019-09-21_10-30-21.png)]

Git Flow 开发分支:

  • master 分支:

    永远处于即将发布的状态。该分支只能从其它分支合并,不允许在该分支上直接修改。

  • develop 分支:

    永远处于最新的开发状态,包含所有要发布到下一个版本的代码,主要用于合并其它分支,如 feature 分支。

  • feature 分支:

    该分支主要用于开发新功能,一旦开发完成,需要合并到 develop 分支。

  • release 分支:

    准备要发布版本的分支,用于修复 bug,基于 develop 分支,完成后合并到 developmaster 分支。

  • hotfix 分支:

    修复线上的紧急 bug,等不到 release 版本就必须马上上线,基于 master 分支,完成后合并到 developmaster 分支。

5. 工作流程示例

  1. 初始分支
    在这里插入图片描述

  2. 新功能分支
    在这里插入图片描述

  3. 发布分支
    在这里插入图片描述

  4. 维护分支
    在这里插入图片描述

6. 示例代码

1. 创建 develop 分支
	$ git branch develop
	$ git push -u origin develop
	
2. 新功能开发
	$ git checkout -b feature/A 
	$ git push -u origin feature/A
	...
	//开发新功能
	$ git status
	$ git add [file]
	$ git commit -m "[discription-message]"
	
3. 完成新功能,合并到 Develop 分支
	$ git pull origin develop
	$ git checkout develop
	$ git merge --no-ff feature/A
	$ git push origin develop
	$ git branch -d feature/A
	$ git push origin --delete feature/A
	
4. 准备发布
	$ git checkout -b release-0.1.0
	
	$ git checkout master
	$ git merge --no-ff release-0.1.0
	$ git push
	
	$ git checkout develop
	$ git merge --no-ff release-0.1.0
	$ git push

	$ git branch -d release-0.1.0

	$ git push origin --delete release-0.1.0

	$ git tag -a v0.1.0 master
	$ git push --tags
	
5. 紧急 Bug 修复
	$ git checkout -b hotfix-0.1.1
    ...
	//修改完 Bug
	$ git checkout master
    $ git merge --no-ff hotfix-0.1.1
    $ git push
    
    $ git checkout develop
	$ git merge --no-ff hotfix-0.1.1
	$ git push
 
 	$ git branch -d hotfix-0.1.1

	$ git tag -a v0.1.1 master
	$ git push --tags

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值