GitFlow 工作流完整命令手册
GitFlow 是一套标准化的 Git 分支管理流程,核心围绕 master(生产分支)、develop(开发分支)、feature(功能分支)、release(发布分支)、hotfix(紧急修复分支)五类分支展开。
具体工作流详情见:Git之GitFlow工作流 | Gitflow Workflow(万字整理,已是最详)
以下是从仓库初始化到生产发布的全流程命令,无冗余文字,直接复制可用。
一、初始化:仓库与分支准备
1. 本地初始化仓库(全新项目)
# 创建项目目录并进入mkdir project-name &&cd project-name # 初始化Git仓库git init # 关联远程仓库(替换为你的远程地址)git remote add origin [email protected]:xxx/project-name.git # 首次提交并推送到mastertouch README.md &&gitadd.&&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密钥。
# 1. 生成SSH密钥(替换为你的邮箱,一路回车默认即可) ssh-keygen -t ed25519 -C "[email protected]"# 2. 查看并复制SSH公钥(复制输出的全部内容)# Mac/Linuxcat ~/.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 [email protected] # GitHubssh -T [email protected] # Giteessh -T [email protected] # GitLab# 5. 验证成功后,执行首次push(免密)git push -u origin master 方式2:个人令牌(Token)认证
未配置SSH,执行git push -u origin master后,命令行弹出“输入用户名密码”时,密码框输入Token而非真实密码。
# 1. 先执行首次push,触发账号输入git push -u origin master # 2. 命令行提示输入时:# 用户名:输入Git平台账号(如GitHub用户名/邮箱)# 密码:输入提前生成的个人令牌(Token)# 【可选】保存Token到凭据管理器(免重复输入)# Windowsgit config --global credential.helper wincred # Macgit config --global credential.helper osxkeychain # Linuxgit config --global credential.helper store Token生成步骤(以GitHub为例)
登录GitHub → 头像 → Settings → Developer settings → Personal access tokens → Generate new token;勾选权限(至少repo)→ 生成Token(仅显示一次,务必复制保存)。方式3:账号密码认证
未配置SSH/Token,执行git push -u origin master后,命令行/弹窗提示输入“用户名+密码”时。
GitHub/GitLab已禁用纯密码认证,此方式仅适用于部分私有Git服务器;
输入后若提示“密码认证失败”,需切换Token方式。
核心总结
# 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分支结构(基于已有仓库)
# 拉取远程master最新代码git checkout master &&git pull origin master # 创建并切换到develop分支(开发主分支)git checkout -b develop # 推送develop到远程git push -u origin develop 二、功能开发:feature分支全流程
1. 从develop创建功能分支
# 切换到develop并拉取最新git checkout develop &&git pull origin develop # 创建功能分支(命名规范:feature/功能名-版本,例:feature/user-login-v1)git checkout -b feature/xxx-function 2. 功能开发&本地提交
# 开发过程中阶段性提交# 开发中多次本地提交(仅本地,随意提交,不影响远程)gitadd.git commit -m "feat: 实现xxx功能核心逻辑"#功能开发完成/需要协作/备份时git push origin feature/xxx-function 3.从develop上拉别人的代码
场景 1:本地 develop 分支无未提交修改
# 1. 切换到本地develop分支git checkout develop # 2. 拉取远程develop最新代码(自动合并到本地develop)git pull origin develop 场景 2:本地有未提交修改
# 1. 暂存本地未提交的修改(关键:防止拉取时代码冲突丢失)git stash # 2. 切换到develop并拉取最新git checkout develop &&git pull origin develop # 3. 恢复本地暂存的修改(继续开发)git stash pop # 4. 若恢复后有冲突,解决后提交gitadd.&&git commit -m "merge: 解决拉取develop后的代码冲突"场景 3:当前在功能分支,需同步 develop 最新代码到功能分支
# 1. 切换到develop并拉取最新git checkout develop &&git pull origin develop # 2. 切回功能分支,合并develop最新代码(同步他人修改)git checkout feature/xxx-function &&git merge develop # 3. 有冲突则解决后提交,无冲突直接继续开发gitadd.&&git commit -m "merge: 同步develop最新代码到功能分支"4.功能完成:合并到develop
# 1. 拉取功能分支本地最新(防止本地遗漏提交)git checkout feature/xxx-function &&gitadd.&&git commit -m "fix: 修复xxx问题"# 2. 切换到develop并拉取远程最新git checkout develop git pull origin develop # 3. 合并功能分支到developgit 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创建发布分支
# 切换到develop并拉取最新git checkout develop &&git pull origin develop # 创建发布分支(命名规范:release/版本号,例:release/v1.0.0)git checkout -b release/v1.0.0 2. 发布分支测试&修复
# 测试过程中修复小问题(仅改bug,不新增功能)gitadd.&&git commit -m "fix: 修复发布前xxx小问题"3. 发布完成:合并到master+develop
# 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创建紧急修复分支
# 切换到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并提交
gitadd.&&git commit -m "fix: 紧急修复生产环境登录失败问题"3. 修复完成:合并到master+develop
# 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 五、通用辅助命令
# 查看状态git status # 查看所有分支(含远程)git branch -a # 强制切换分支(放弃本地未提交修改)git checkout -f develop # 拉取远程所有分支最新代码git fetch origin # 解决冲突后标记为已解决gitadd.# 撤销最近一次提交(保留代码,仅撤回commit)git reset --soft HEAD~1 # 推送到远程时强制覆盖(谨慎使用,仅自己的分支)git push origin feature/xxx-function -f 核心规范总结
- 分支命名:
feature/xxx、release/vx.x.x、hotfix/xxx-vx.x.x; - 提交信息:
feat/fix/release/hotfix: 描述(符合Conventional Commits); - 合并规则:仅通过
merge --no-ff合并(保留分支历史),禁止直接推送到master/develop。