两种完整的 Git 分支协作流程

两种完整的 Git 分支协作流程:「本地新建仓库推送到远程」和「克隆远程仓库开发分支」,覆盖从分支创建、开发、推送、合并到清理的全环节,每个步骤都附带可执行命令和场景说明,新手可直接照做。

前置准备

  1. 已配置 Git 用户名 / 邮箱(git config --global user.name/email);

  2. 已在 GitHub 上创建空仓库(如 https://github.com/你的账号/test-repo.git);

  3. 理解核心分支规范:main(主分支,生产环境)、dev(开发分支,日常开发)、feature/*(功能分支,单个功能)。


一、流程一:本地新建仓库 → 推送到远程(分支版)

适用于「本地先写代码,后关联远程仓库」的场景,全程按分支规范操作。

步骤 1:本地初始化仓库并创建主分支

运行

复制代码
# 1. 创建本地项目文件夹并进入
mkdir test-repo && cd test-repo

# 2. 初始化 Git 仓库(默认创建 main 分支)
git init

# 3. 新增初始文件(如 README.md),完成首次提交(main 分支)
echo "# 测试仓库" > README.md
git add .
git commit -m "main: 初始化仓库,添加 README"

步骤 2:创建开发分支 dev(核心协作分支)

运行

复制代码
# 1. 创建并切换到 dev 分支(从 main 分支派生)
git switch -c dev  # 等价于 git checkout -b dev

# 2. 在 dev 分支新增开发文件,提交(模拟基础开发)
echo "开发分支初始化" > dev-note.md
git add .
git commit -m "dev: 初始化开发分支,添加开发笔记"

步骤 3:关联远程仓库并推送主分支 + 开发分支

运行

复制代码
# 1. 关联 GitHub 远程仓库(别名 origin)
git remote add origin https://github.com/你的账号/test-repo.git

# 2. 推送 main 分支到远程(首次推送加 -u 建立关联)
git push -u origin main

# 3. 推送 dev 分支到远程(建立关联,后续可直接 git push)
git push -u origin dev

步骤 4:创建功能分支开发(核心:隔离开发)

运行

复制代码
# 1. 从 dev 分支创建功能分支(如开发登录功能)
git switch -c feature/login dev

# 2. 在功能分支开发代码,多次提交
echo "登录接口代码" > login.py
git add .
git commit -m "feature/login: 新增登录接口基础逻辑"

# 3. 继续开发,补充提交(模拟迭代)
echo "添加手机号验证" >> login.py
git add .
git commit -m "feature/login: 完善登录接口,添加手机号验证"

步骤 5:推送功能分支到远程(协作 / 备份)

运行

复制代码
# 推送 feature/login 到远程,建立关联
git push -u origin feature/login

步骤 6:合并功能分支到 dev(功能完成)

运行

复制代码
# 1. 切回 dev 分支,拉取远程最新 dev 代码(避免冲突)
git switch dev
git pull origin dev  # 多人协作时必做,同步他人修改

# 2. 合并 feature/login 到 dev 分支
git merge feature/login -m "dev: 合并登录功能分支"

# 3. 推送合并后的 dev 分支到远程
git push origin dev

步骤 7:合并 dev 到 main(功能上线)

运行

复制代码
# 1. 切回 main 分支,拉取远程最新 main 代码
git switch main
git pull origin main

# 2. 合并 dev 分支到 main(仅功能测试通过后执行)
git merge dev -m "main: 合并 dev 分支,上线登录功能"

# 3. 推送 main 分支到远程(生产环境更新)
git push origin main

步骤 8:清理无用分支(本地 + 远程)

运行

复制代码
# 1. 删除本地 feature/login 分支(已合并,-d 安全删除)
git branch -d feature/login

# 2. 删除远程 feature/login 分支(清理远程冗余)
git push origin --delete feature/login

# (可选)若 dev 分支需长期维护,无需删除;仅清理功能分支

二、流程二:克隆远程仓库 → 开发分支(更常用)

适用于「先克隆远程空仓库,再按分支开发」的场景(团队协作主流方式)。

步骤 1:克隆远程仓库到本地

运行

复制代码
# 克隆远程仓库(自动关联 origin,默认拉取 main 分支)
git clone https://github.com/你的账号/test-repo.git
cd test-repo

步骤 2:创建并推送 dev 分支到远程(初始化开发分支)

运行

复制代码
# 1. 从 main 分支创建 dev 分支并切换
git switch -c dev

# 2. 推送 dev 分支到远程(让团队共享开发分支)
git push -u origin dev

步骤 3:拉取远程 dev 分支(多人协作时)

如果是团队成员,克隆仓库后需先拉取远程 dev 分支:

运行

复制代码
# 1. 拉取远程所有分支信息(更新本地缓存)
git fetch origin

# 2. 创建并切换到本地 dev 分支,关联远程 dev
git switch -c dev origin/dev

步骤 4:创建功能分支开发(和流程一一致)

运行

复制代码
# 从 dev 分支创建 feature/pay 分支(开发支付功能)
git switch -c feature/pay dev

# 开发+提交
echo "支付接口代码" > pay.py
git add .
git commit -m "feature/pay: 新增支付接口"

# 推送功能分支到远程(供同事审核/协作)
git push -u origin feature/pay

步骤 5:通过 Pull Request(PR)合并分支(GitHub 网页版)

团队协作中,不建议本地直接合并,优先用 GitHub PR 规范合并:

  1. 打开 GitHub 仓库页面 → 点击「Pull requests」→「New pull request」;

  2. 「base: dev」(目标分支)→「compare: feature/pay」(待合并分支);

  3. 填写 PR 描述(如「支付功能开发完成,包含微信 / 支付宝接口」);

  4. 审核通过后,点击「Merge pull request」合并到 dev 分支;

  5. 本地拉取合并后的 dev 代码: 运行

    复制代码
    git switch dev
    git pull origin dev

步骤 6:合并 dev 到 main(上线)+ 清理分支

运行

复制代码
# 1. 切回 main 分支,拉取最新代码
git switch main
git pull origin main

# 2. 合并 dev 到 main
git merge dev -m "main: 上线支付功能"
git push origin main

# 3. 清理分支
git branch -d feature/pay  # 本地删除
git push origin --delete feature/pay  # 远程删除

核心补充:分支操作关键命令速查

操作 命令
查看所有分支 git branch -a(本地 + 远程)
切换分支 git switch 分支名(git 2.23+)
创建并切换分支 git switch -c 新分支名 基准分支
拉取远程分支到本地 git switch -c 本地分支名 origin/远程分支名
合并分支 git merge 待合并分支 -m "合并备注"
删除本地分支 git branch -d 分支名(已合并)/ -D(强制)
删除远程分支 git push origin --delete 分支名

流程总结(核心原则)

  1. 分支隔离 :永远不在 main 分支直接开发,功能都在 feature/* 分支开发;

  2. 合并规范feature/* → dev → main,逐级合并,避免跨级直接合到 main;

  3. 推送前拉取 :合并 / 推送前必执行 git pull,同步远程最新代码,减少冲突;

  4. 及时清理:功能合并后立即删除本地 / 远程功能分支,避免分支泛滥;

  5. 备注规范 :提交备注带分支前缀(如 feature/login: 修复XX Bug),便于追溯。

三、安全合并远程修改(推荐,无数据丢失)

步骤 1: 拉取远程 vip/zs 分支的最新代码并合并

运行

复制代码
# 拉取远程 vip 仓库的 zs 分支到本地,并自动合并
git pull vip zs --allow-unrelated-histories
# 补充:--allow-unrelated-histories 是为了防止「本地和远程 zs 分支无公共提交历史」导致的合并失败
  • 无冲突情况:Git 会自动创建「合并提交」,把远程和本地的内容整合,输出类似:

    复制代码
    Merge made by the 'recursive' strategy.
  • 有冲突情况 :Git 会提示 Automatic merge failed; fix conflicts and then commit the result.,解决冲突步骤:

    1. 执行 git status 查看冲突文件(标记为 both modified);

    2. 打开冲突文件,删除 Git 标记的 <<<<<<</=======/>>>>>>,手动保留需要的内容;

    3. 提交解决后的代码:

      复制代码
      git add 冲突文件名
      git commit -m "合并远程vip/zs分支,解决XX文件冲突"

步骤 2: 重新推送本地 zs 分支到远程 vip

合并完成后,本地 zs 分支就包含了远程的所有提交,此时推送会成功:

运行

复制代码
git push -u vip zs

强制推送(谨慎,会覆盖远程代码)

如果你确认远程 vip/zs 分支的「新提交」是无用的(比如是误提交、测试内容),且你有权覆盖远程内容(该仓库仅你使用),可执行强制推送(会丢失远程 zs 分支中你本地没有的提交,团队仓库绝对禁止使用!):

运行

复制代码
# 强制推送本地 zs 分支覆盖远程 vip/zs 分支
git push -f -u vip zs

⚠️ 警告:强制推送会直接替换远程 zs 分支的所有提交记录,若有其他开发者提交过代码,会导致他们的修改丢失,仅适用于个人专属仓库。

相关推荐
Coding茶水间2 小时前
基于深度学习的交通标志检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·目标检测·机器学习
南方者2 小时前
【Sourcetree】【Git】提交后无法推送,优雅回滚
git·版本管理·sourcetree·回滚·贮藏
a努力。2 小时前
字节Java面试被问:TCP的BBR拥塞控制算法原理
java·开发语言·python·tcp/ip·elasticsearch·面试·职场和发展
智在碧得2 小时前
碧服打造DataOps全链路闭环,定义大数据工程化发布新标杆
大数据·网络·数据库
亿信华辰软件2 小时前
构建智慧数据中台,赋能饮料集团全链路数字化转型新引擎
大数据·人工智能·云计算
费弗里2 小时前
一个小技巧轻松提升Dash应用debug效率
python·dash
小小测试开发2 小时前
Python浮点型常用方法全解析:从基础到实战
python
大模型实验室Lab4AI2 小时前
西北工业大学 StereoMV2D 突破 3D 物体检测深度难题,精度与效率兼得
人工智能·计算机视觉·目标跟踪
旷野说2 小时前
打造 36Gbps 超高速本地机器学习开发环境
人工智能·机器学习