多人协作 Git 完整工作流示例

本地自己的分支为:dev-bing
远程自己的分支为:dev-bing
远程开发分支为:dev

多人协作 Git 完整工作流示例

1. 约定分支策略

  • main(或 master):生产环境稳定代码,只允许合并通过的 PR。

  • dev:团队开发主分支,所有功能分支基于它创建。

  • 个人日常开发分支(feature branches):以 feature/xxx 命名(我是dev-bing),承载个人开发工作。

2. 更新代码

git checkout dev            # 切到本地 dev 分支

git pull origin dev         # 更新本地 dev 分支 (确保本地dev代码最新)

git checkout dev-bing       # 切换到个人日常开发分支:本地 dev-bing 分支

git merge dev               # 把本地 dev 分支 合并到 本地 dev-bing 分支(确保本地dev-bing代码最新)

3. 提交代码

# 在本地 dev-bing 分支开发完成后:
git commit -m "feat: 完成 xxx"
git push origin dev-bing    # 推送到远程个人分支 dev-bing

# 然后合并到团队主分支:
git checkout dev            # 切回主分支 dev
git pull origin dev         # 拉取最新远程代码,避免落后
git merge dev-bing          # 把 本地 dev-bing 分支合并到 本地 dev 分支
git push origin dev         # 推送更新后的主分支代码到远程,供团队共享

🏫4. 完全版(学习用)

# 1. 切换到本地主分支 dev,准备同步远程最新代码
git checkout dev
# -----------------------------------------------------------------------------------
# 切换分支到本地的 dev,dev 是团队主开发分支,基于远程 origin/dev


# 2. 从远程拉取最新的 dev 分支,更新本地 dev
git pull origin dev
# -----------------------------------------------------------------------------------
# 拉取远程 origin 仓库的 dev 分支最新提交,并合并到本地 dev,确保本地 dev 与远程保持同步


# 3. 切换到你自己的功能开发分支 dev-bing
git checkout dev-bing
# -----------------------------------------------------------------------------------
# 切换到你本地的 dev-bing 分支,这是你个人的功能分支,基于 dev 创建


# 4. 将最新的 dev 分支合并到 dev-bing,保证个人分支同步主分支最新改动
git merge dev
# -----------------------------------------------------------------------------------
# 把本地更新后的 dev 分支合并到 dev-bing,解决主分支的新提交和你的代码兼容问题


# 5. (可选)在 dev-bing 分支上完成开发后,提交本地修改
git add .
git commit -m "feat: 完成 xxx 功能"
# -----------------------------------------------------------------------------------
# 暂存所有改动并提交,写清楚提交信息以便团队了解改动内容


# 6. 将本地 dev-bing 分支推送到远程仓库,备份并共享你的开发进度
git push origin dev-bing
# -----------------------------------------------------------------------------------
# 把本地 dev-bing 分支推送到远程 origin 仓库对应的 dev-bing 分支,方便备份及代码审查


# 7. 切换回本地主分支 dev,准备合并个人分支代码
git checkout dev
# -----------------------------------------------------------------------------------
# 切换到本地 dev 分支,准备将你的功能分支代码合入主分支


# 8. 再次拉取远程 dev,确保本地 dev 是最新
git pull origin dev
# -----------------------------------------------------------------------------------
# 以防远程主分支有新提交,先同步更新本地 dev,避免合并冲突


# 9. 将你的个人分支 dev-bing 合并到本地 dev
git merge dev-bing
# -----------------------------------------------------------------------------------
# 把你开发完成并推送的 dev-bing 分支合并到 dev,合入团队主分支的最新代码


# 10. 将更新后的本地 dev 分支推送到远程,完成团队代码更新
git push origin dev
# -----------------------------------------------------------------------------------
# 推送本地合并后的 dev 分支到远程仓库,团队成员即可拉取最新代码

.

🚀5. 简洁版(日常用)

git checkout dev                   # 切到主分支 dev
git pull origin dev                # 拉取远程最新代码,更新本地 dev

git checkout dev-bing              # 切回个人开发分支 dev-bing
git merge dev                     # 合并主分支最新代码到 dev-bing

# --- 开发完成后 ---
git add .
git commit -m "feat: 完成 xxx"    # 提交改动
git push origin dev-bing           # 推送个人分支到远程备份

git checkout dev                   # 切回主分支
git pull origin dev                # 确保本地 dev 最新
git merge dev-bing                 # 合并个人分支代码到主分支
# 或:git rebase dev
git push origin dev                # 推送更新后的主分支到远程

.

git merge 与 git rebase 区别

  • git merge dev:把主分支 dev 的最新提交合并到你当前的 dev-bing 分支,会生成一个新的合并提交(merge commit)。提交历史会保留“分叉-合并”的结构。
    如果团队协作比较复杂、分支较多,或者不熟悉 rebase,使用 git merge dev 更安全,操作也更直观

  • git rebase dev:会把你 dev-bing 分支上的提交“移到”最新的 dev 分支后面,线性地重新排列提交历史,没有合并提交,历史更干净整洁。
    如果想保持提交历史简单、线性,方便查看

.

⚡️注意

慎用 git pull origin devgit push origin dev-bing:dev

  1. git pull origin dev (当前分支是 dev-bing)

    • 把远程 origin/dev 拉取下来,自动合并到你当前分支 dev-bing。
    • 这相当于直接把远程主分支的代码合并进你的个人开发分支,可能导致不必要的冲突和混乱。
    • 本地的 dev 分支可能没有更新,本地分支管理不清晰。
      .

    git pull origin dev 建议替换成:

    git checkout dev
    git pull origin dev          # 先更新本地 dev 分支
    git checkout dev-bing
    git merge dev                # 再把更新后的 dev 合并到 dev-bing
    

    这样本地分支结构清晰,便于管理和排查问题。

  2. git push origin dev-bing:dev

    • 直接把本地 dev-bing 分支推送并覆盖远程 dev 分支。
    • 直接推送个人分支代码到远程主分支,跳过代码审核流程,非常危险。
    • 可能覆盖他人已合并的提交,导致团队协作混乱。
      .

    git push origin dev-bing:dev 建议替换成:

    git push origin dev-bing   # 先推送个人分支
    
    git checkout dev           # 切换到dev分支
    git pull origin dev        # 更新dev分支
    git merge dev-bing         # 把本地dev-bing合并到本地dev分支
    git push origin dev        # 推送dev分支
    

其他

1. git branch 查看分支

命令查看内容包含远程显示 commit显示 tracking 关系说明
git branch本地分支最简单的本地分支列表
git branch -a所有分支✅(远程+本地)本地 + 远程分支列表
git branch -v本地分支 + 最近提交查看本地每个分支最近一次提交
git branch -vv(推荐)本地分支 + 最近提交 + tracking最常用,显示关联远程和状态
git branch -r远程分支✅(仅远程)只列出远程分支,不包含本地

.

2. git fetch origin 拉取最新代码

命令功能细节说明使用建议
git fetch origin从远程仓库下载最新的所有分支和提交,但不合并到当前分支。只更新远程分支的引用,比如 origin/main,本地分支不变。安全做法:先用 git fetch 查看远程变更,再决定是否合并
git pull从远程仓库拉取最新代码并自动合并到当前本地分支。相当于先执行 git fetch,然后执行 git merge快捷做法:直接用 git pull,适合确认远程改动且你准备好合并的情况。

.

3. git switch

git switch 和 git checkout 在某些功能上是相似的,尤其是用于切换分支时。但它们不是完全等价,Git 从 2.23 开始推荐使用 git switch 和 git restore 来代替 git checkout,以让命令更清晰、语义更明确。

功能git switchgit checkout
✅ 切换分支✔️ 推荐使用✔️ 传统方式
✅ 创建新分支✔️ -c 参数创建✔️ -b 参数创建
❌ 恢复文件🚫 不支持✔️ 支持(但语义不清晰)
✅ 新手友好性更明确、更安全多功能,容易误操作

推荐替代组合

传统 git checkout 功能推荐的新语法
git checkout branchgit switch branch
git checkout -b new-branchgit switch -c new-branch
git checkout file.ts (恢复 file.ts 文件)git restore file.ts
git checkout .(恢复所有文件)git restore .

为什么推荐用 switch

  • 更语义化:switch 就是只管切分支,不会误改文件

  • 更安全:不会一不小心还原掉某个文件

  • 更清晰:新手不容易混淆“切分支”和“还原文件”的操作

.

4. git stash 临时保存

保存内容

# 把你当前工作目录和暂存区的修改保存起来,恢复到最近一次提交的干净状态
# 修改不会被提交,只是临时藏起来
git stash


# 保存加备注隐藏
git stash save "备注信息"

查看保存的内容

git stash list   # 查看所有保存的 stash 条目,格式一般是 stash@{0}, stash@{1} ,如下:

	stash@{0}: WIP on dev-1: 1234567 Initial commit  
	stash@{1}: On dev-1: Another set of changes

恢复保存的内容(取回修改)

# 把最近一次 stash 的修改应用到当前分支
# stash 内容仍保留,可以多次应用
git stash apply
git stash apply stash@{n}   # 恢复特定的 stash 条目


# 把最近一次 stash 的修改应用到当前分支
# stash 会从列表中删除(弹出)
git stash pop   
git stash pop stash@{n}  

删除某条 stash

git stash drop stash@{0}

使用场景示例
当正在修改代码,但突然需要切换分支处理紧急问题:

git stash             # 暂存当前修改
git checkout hotfix   # 切换分支
# 处理紧急问题后
git checkout dev-bing # 回到之前分支
git stash pop         # 恢复之前的修改

.

4. 本地分支关联远程分支

如果 本地分支dev-bing 想要与 远程分支dev-bing 联立追踪关系,可以使用

命令建立 tracking推送代码说明如果远程没有dev-bing分支
git branch --set-upstream-to=origin/dev-bing dev-bing✅ 是❌ 否仅建立追踪关系,不会推送代码会报错,不会创建该分支
git push --set-upstream origin dev-bing
简写:git push -u origin dev-bing
✅ 是✅ 是建立追踪关系 + 推送代码会创建该分支

建立追踪关系后,以后就可以直接用 git pushgit pull 而不需要每次都加远程和分支名

.

5. git merge 合并本地分支

git merge 和 git push 是 Git 中两个非常常用但作用完全不同的命令

命令用于作用对象简单理解
git merge本地本地合并分支两个本地分支的内容合并在一起, 不会和远程交互(完全是本地操作)
git push本地 → 远程推送分支到远程仓库本地分支的代码推送到远程仓库
# 1. 切到 本地 dev 分支
git checkout dev

# 2. 把本地 dev-bing 分支合并到 当前 dev 分支上(即:把 dev-bing 的改动合并进 dev)
git merge dev-bing

# 3. 推送合并后的结果到远程dev分支
git push origin dev
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫老板的豆

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值