GitFlow 工作流完整命令手册

GitFlow 是一套标准化的 Git 分支管理流程,核心围绕 master(生产分支)、develop(开发分支)、feature(功能分支)、release(发布分支)、hotfix(紧急修复分支)五类分支展开。

具体工作流详情见:Git之GitFlow工作流 | Gitflow Workflow(万字整理,已是最详)

以下是从仓库初始化到生产发布的全流程命令,无冗余文字,直接复制可用。

一、初始化:仓库与分支准备

1. 本地初始化仓库(全新项目)

bash 复制代码
# 创建项目目录并进入
mkdir project-name && cd project-name
# 初始化Git仓库
git init
# 关联远程仓库(替换为你的远程地址)
git remote add origin git@github.com:xxx/project-name.git
# 首次提交并推送到master
touch README.md && git add . && git commit -m "init: 初始化仓库"
git push -u origin master

当你首次配置仓库时,需要配置密钥,以下是首次创建项目时,不同认证方式的触发时机+核心命令,直接对应场景使用:

认证方式 触发时机 适用场景
SSH密钥 配置后,首次git push/pull远程仓库时 长期使用(免重复输入密码)
个人令牌(Token) 无SSH时,首次git push输入账号后替代密码 临时/无SSH权限场景
账号密码 无SSH/Token时,首次git push弹窗/命令行提示 仅临时测试(不推荐)
方式1:SSH密钥认证

首次关联远程仓库(git remote add origin)后执行git push时,若未配置SSH,会提示权限拒绝,需先配置SSH密钥。

bash 复制代码
# 1. 生成SSH密钥(替换为你的邮箱,一路回车默认即可)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 2. 查看并复制SSH公钥(复制输出的全部内容)
# Mac/Linux
cat ~/.ssh/id_ed25519.pub
# Windows(PowerShell)
type $HOME/.ssh/id_ed25519.pub

# 3. 登录Git平台(GitHub/GitLab/Gitee)添加公钥
# 路径:个人设置 → SSH and GPG keys → New SSH key → 粘贴公钥保存

# 4. 验证SSH连接(替换为对应平台域名)
ssh -T git@github.com # GitHub
ssh -T git@gitee.com   # Gitee
ssh -T git@gitlab.com  # GitLab

# 5. 验证成功后,执行首次push(免密)
git push -u origin master
方式2:个人令牌(Token)认证

未配置SSH,执行git push -u origin master后,命令行弹出"输入用户名密码"时,密码框输入Token而非真实密码

bash 复制代码
# 1. 先执行首次push,触发账号输入
git push -u origin master

# 2. 命令行提示输入时:
# 用户名:输入Git平台账号(如GitHub用户名/邮箱)
# 密码:输入提前生成的个人令牌(Token)

# 【可选】保存Token到凭据管理器(免重复输入)
# Windows
git config --global credential.helper wincred
# Mac
git config --global credential.helper osxkeychain
# Linux
git config --global credential.helper store

Token生成步骤(以GitHub为例)

  1. 登录GitHub → 头像 → Settings → Developer settings → Personal access tokens → Generate new token;
  2. 勾选权限(至少repo)→ 生成Token(仅显示一次,务必复制保存)。
方式3:账号密码认证

未配置SSH/Token,执行git push -u origin master后,命令行/弹窗提示输入"用户名+密码"时。

GitHub/GitLab已禁用纯密码认证,此方式仅适用于部分私有Git服务器;

输入后若提示"密码认证失败",需切换Token方式。

核心总结

bash 复制代码
# SSH密钥生成
ssh-keygen -t ed25519 -C "你的邮箱" && cat ~/.ssh/id_ed25519.pub

# 保存凭据(Token/密码免重复输入)
git config --global credential.helper [wincred/osxkeychain/store]

# 首次push(触发认证)
git push -u origin master

2. 初始化GitFlow分支结构(基于已有仓库)

bash 复制代码
# 拉取远程master最新代码
git checkout master && git pull origin master
# 创建并切换到develop分支(开发主分支)
git checkout -b develop
# 推送develop到远程
git push -u origin develop

二、功能开发:feature分支全流程

1. 从develop创建功能分支

bash 复制代码
# 切换到develop并拉取最新
git checkout develop && git pull origin develop
# 创建功能分支(命名规范:feature/功能名-版本,例:feature/user-login-v1)
git checkout -b feature/xxx-function

2. 功能开发&本地提交

bash 复制代码
# 开发过程中阶段性提交
# 开发中多次本地提交(仅本地,随意提交,不影响远程)
git add .
git commit -m "feat: 实现xxx功能核心逻辑"

#功能开发完成/需要协作/备份时
git push origin feature/xxx-function

3.从develop上拉别人的代码

场景 1:本地 develop 分支无未提交修改
bash 复制代码
# 1. 切换到本地develop分支
git checkout develop

# 2. 拉取远程develop最新代码(自动合并到本地develop)
git pull origin develop
场景 2:本地有未提交修改
bash 复制代码
# 1. 暂存本地未提交的修改(关键:防止拉取时代码冲突丢失)
git stash

# 2. 切换到develop并拉取最新
git checkout develop && git pull origin develop

# 3. 恢复本地暂存的修改(继续开发)
git stash pop

# 4. 若恢复后有冲突,解决后提交
git add . && git commit -m "merge: 解决拉取develop后的代码冲突"
场景 3:当前在功能分支,需同步 develop 最新代码到功能分支
bash 复制代码
# 1. 切换到develop并拉取最新
git checkout develop && git pull origin develop

# 2. 切回功能分支,合并develop最新代码(同步他人修改)
git checkout feature/xxx-function && git merge develop

# 3. 有冲突则解决后提交,无冲突直接继续开发
git add . && git commit -m "merge: 同步develop最新代码到功能分支"

4.功能完成:合并到develop

bash 复制代码
# 1. 拉取功能分支本地最新(防止本地遗漏提交)
git checkout feature/xxx-function && git add . && git commit -m "fix: 修复xxx问题"
# 2. 切换到develop并拉取远程最新
git checkout develop
git pull origin develop
# 3. 合并功能分支到develop
git merge feature/xxx-function --no-ff -m "merge: 合并xxx功能到develop"
# 4. 推送合并后的develop到远程
git push origin develop
# 5. 删除本地+远程功能分支(可选,功能已合并)
git branch -d feature/xxx-function
git push origin -d feature/xxx-function
git fetch origin --prune # 清理远程已删除的分支缓存

三、版本发布:release分支全流程

1. 从develop创建发布分支

bash 复制代码
# 切换到develop并拉取最新
git checkout develop && git pull origin develop
# 创建发布分支(命名规范:release/版本号,例:release/v1.0.0)
git checkout -b release/v1.0.0

2. 发布分支测试&修复

bash 复制代码
# 测试过程中修复小问题(仅改bug,不新增功能)
git add . && git commit -m "fix: 修复发布前xxx小问题"

3. 发布完成:合并到master+develop

bash 复制代码
# 1. 合并到master(生产分支)
git checkout master && git pull origin master
git merge release/v1.0.0 --no-ff -m "release: 发布v1.0.0正式版"
git tag -a v1.0.0 -m "v1.0.0 正式发布" # 打版本标签
git push origin master && git push origin v1.0.0 # 推送master+标签

# 2. 合并到develop(同步发布分支的修复)
git checkout develop && git pull origin develop
git merge release/v1.0.0 --no-ff -m "merge: 同步release/v1.0.0修复到develop"
git push origin develop

# 3. 删除发布分支(本地+远程)
git branch -d release/v1.0.0
git push origin -d release/v1.0.0
git fetch origin --prune

四、紧急修复:hotfix分支全流程

1. 从master创建紧急修复分支

bash 复制代码
# 切换到master并拉取最新生产代码
git checkout master && git pull origin master
# 创建hotfix分支(命名规范:hotfix/问题描述-版本,例:hotfix/login-bug-v1.0.1)
git checkout -b hotfix/login-bug-v1.0.1

2. 修复bug并提交

bash 复制代码
git add . && git commit -m "fix: 紧急修复生产环境登录失败问题"

3. 修复完成:合并到master+develop

bash 复制代码
# 1. 合并到master并打新标签
git checkout master && git pull origin master
git merge hotfix/login-bug-v1.0.1 --no-ff -m "hotfix: 修复登录bug,发布v1.0.1"
git tag -a v1.0.1 -m "v1.0.1 紧急修复登录问题"
git push origin master && git push origin v1.0.1

# 2. 合并到develop(同步修复)
git checkout develop && git pull origin develop
git merge hotfix/login-bug-v1.0.1 --no-ff -m "merge: 同步hotfix登录bug修复到develop"
git push origin develop

# 3. 删除hotfix分支(本地+远程)
git branch -d hotfix/login-bug-v1.0.1
git push origin -d hotfix/login-bug-v1.0.1
git fetch origin --prune

五、通用辅助命令

bash 复制代码
# 查看状态
git status
# 查看所有分支(含远程)
git branch -a
# 强制切换分支(放弃本地未提交修改)
git checkout -f develop
# 拉取远程所有分支最新代码
git fetch origin
# 解决冲突后标记为已解决
git add .
# 撤销最近一次提交(保留代码,仅撤回commit)
git reset --soft HEAD~1
# 推送到远程时强制覆盖(谨慎使用,仅自己的分支)
git push origin feature/xxx-function -f

核心规范总结

  1. 分支命名:feature/xxxrelease/vx.x.xhotfix/xxx-vx.x.x
  2. 提交信息:feat/fix/release/hotfix: 描述(符合Conventional Commits);
  3. 合并规则:仅通过 merge --no-ff 合并(保留分支历史),禁止直接推送到 master/develop
相关推荐
mCell6 小时前
如何零成本搭建个人站点
前端·程序员·github
mCell7 小时前
为什么 Memo Code 先做 CLI:以及终端输入框到底有多难搞
前端·设计模式·agent
恋猫de小郭7 小时前
AI 在提高你工作效率的同时,也一直在增加你的疲惫和焦虑
前端·人工智能·ai编程
少云清7 小时前
【安全测试】2_客户端脚本安全测试 _XSS和CSRF
前端·xss·csrf
银烛木7 小时前
黑马程序员前端h5+css3
前端·css·css3
m0_607076607 小时前
CSS3 转换,快手前端面试经验,隔壁都馋哭了
前端·面试·css3
听海边涛声7 小时前
CSS3 图片模糊处理
前端·css·css3
IT、木易7 小时前
css3 backdrop-filter 在移动端 Safari 上导致渲染性能急剧下降的优化方案有哪些?
前端·css3·safari
0思必得07 小时前
[Web自动化] Selenium无头模式
前端·爬虫·selenium·自动化·web自动化
anOnion8 小时前
构建无障碍组件之Dialog Pattern
前端·html·交互设计