12 Git 多人协作(完整版工作流)

适用场景:3-20 人小型团队,使用 GitHub / Gitee / GitLab 托管代码

示例命令均以 GitHub 为例,GitLab / Gitee 完全通用,只需换远程地址


12.1 协作前准备:一次配置,终身受益

配置项 命令示例 说明
本地身份(仓库级) git config --local user.name "林冲" git config --local user.email "linchong@team.io" 多人共用电脑时必设,区分作者
默认分支名 git config --global init.defaultBranch main 新仓库默认 main,跟上 GitHub
换行符自动转换 git config --global core.autocrlf true Windows 推荐
编辑器 git config --global core.editor "code --wait" 冲突解决时自动弹 VS Code

12.2 单仓库协作:Forking / 共享仓库模式

① 共享仓库模式(团队内部最常用)

  1. 管理员 创建空仓库,不要初始化 README

    https://github.com/team/project.git

  2. 成员一次性克

    复制代码
    git clone git@github.com:team/project.git
    cd project
    git config --local user.name "林冲"
    git config --local user.email "linchong@team.io"
  3. 成员日常三板

    复制代码
    git pull --rebase origin main   # 开始工作前
    # ...coding...
    git add .
    git commit -m "fix: 修复登录超时"
    git push origin main

    --rebase 让历史成直线,回滚/查 log 更清爽。


② Fork + PR 模式(跨团队 / 开源项目)

  1. 成员 Fork 官方仓库 → 得到 github.com/自己/project

  2. 本地关联两远

    复制代码
    git clone git@github.com:自己/project.git
    cd project
    git remote add upstream https://github.com/官方/project.git
  3. 功能开

    复制代码
    git checkout -b feature/pay
    # ...coding...
    git push -u origin feature/pay
  4. 浏览器创建 Pull Request(PR) → 官方评审 → 合并

  5. 同步官方最新代

    复制代码
    git fetch upstream
    git checkout main
    git merge upstream/main
    git push origin main

12.3 分支策略:Git-Flow 简化版

分支 命名 用途 保护规则
main main 随时可上线 GitHub Protect 禁止强推
develop develop 日常集成 同 main
feature feature/xxx 新功能 任意推送,PR 合并
hotfix hotfix/xxx 线上紧急修复 PR 合并后打 Tag

小团队可把 main 当 develop 用,再建 release 分支即可。


12.4 冲突解决:从上手到上瘾

场景:林冲 & 鲁智深 同时改同一行

  1. 林冲先 pus

    复制代码
    echo "林冲改" >> B.txt
    git add B.txt && git commit -m "林冲提交"
    git push
  2. 鲁智深后 push → 被

    复制代码
    echo "鲁智深改" >> B.txt
    git add B.txt && git commit -m "鲁智深提交"
    git push   # 被拒
  3. 鲁智深拉取最新代码

    复制代码
    git pull --rebase origin main

    此时文件出现冲突标记:

    复制代码
    <<<<<<< HEAD
    林冲改
    =======
    鲁智深改
    >>>>>>> 鲁智深提交
  4. 手工改好(保留想要的内容)→ 保存

  5. 继续 rebase

    复制代码
    git add B.txt
    git rebase --continue
    git push
  6. 完事!历史仍是一条直线。


12.5 远程分支生命周期

复制代码
# 1. 本地新建并推到远程
git checkout -b feature/cart
git push -u origin feature/cart

# 2. 队友同步该分支
git fetch
git checkout -b feature/cart origin/feature/cart

# 3. 功能完成,合并到 main 后删除远程分支
git checkout main
git merge feature/cart
git push origin --delete feature/cart   # 远程删
git branch -d feature/cart              # 本地删

12.6 大型二进制文件?用 LFS

复制代码
# 一次性安装
git lfs install

# 追踪大文件
git lfs track "*.zip"
git add .gitattributes
git add demo.zip
git commit -m "添加 200M 压缩包"
git push

把大文件存到 LFS 服务器,仓库里只留指针,clone 飞快。


12.7 常见协作踩坑速查

现象 原因 快速修复
! [rejected] main -> main (fetch first) 远端有更新 git pull --rebase 再 push
refusing to merge unrelated histories 两仓库无共同祖先 git pull --allow-unrelated-histories
error: You have not concluded your merge (MERGE_HEAD exists) 上次 merge 没完成 git merge --abort 重来
误推大文件 历史已污染 git reflog + git reset --hard <提交> 重写历史

12.8 一键备忘清单(建议收藏)

复制代码
######## 每日开工 ########
git fetch -p                  # 看远端有没有新分支/被删分支
git checkout main
git pull --rebase origin main
git checkout -b feature/xxx   # 新建功能分支

######## 提交阶段 ########
git add .
git commit -m "type: 简短描述"
git push -u origin feature/xxx

######## 合并阶段 ########
# GitHub 网页创建 PR → Code Review → Squash Merge
# 本地清理
git checkout main
git branch -d feature/xxx
git remote prune origin       # 清理远端已删分支的本地引用

12.9 小结

  1. 小团队 → 共享仓库 + 保护 main 分支 + PR 合并

  2. 跨团队/开源 → Fork + PR 模式

  3. 冲突 不可怕,pull --rebase + 手工解决 + push 三步搞定

  4. 分支用完即删,保持仓库轻量

  5. 大文件交给 LFS,别让仓库臃肿

把这份流程贴在团队 Wiki,新成员 5 分钟即可上手协作。祝 Push & PR 愉快!

相关推荐
好好研究6 小时前
Git - 项目克隆命令、冲突处理流程
git·gitee
空空kkk7 小时前
Git——多人协作
git
Cx330❀8 小时前
Git 分支管理完全指南:从基础到团队协作
大数据·git·搜索引擎·全文检索
梅梅绵绵冰8 小时前
Git版本控制
git
好好研究8 小时前
Git - 多人协作流程
git·gitee
_OP_CHEN9 小时前
【Git原理与使用】(五)Git 多人协作:从分支协作到冲突解决,团队开发效率翻倍秘籍
linux·运维·git·团队开发·运维开发·企业级组件·git多人协作
wangjialelele11 小时前
git工作原理、个人使用到多人协作开发与git FLOW模型
c语言·c++·git·团队开发·个人开发
{Hello World}11 小时前
Git入门指南:从零掌握版本控制
git
量子炒饭大师11 小时前
一天一个计算机知识——【编程百度】向上取整
c语言·数据结构·c++·git·github