Git的同步分支的建立
文章目录
- 一、什么是“同步分支”
- 二、你这条命令在干嘛
- ✅ 标准(正确)建法
- 三、同步分支是怎么“建立”的(本质)
- 四、为什么要搞一个“同步分支”(核心价值)
- 1️⃣ 避免污染主分支(最重要)
- 2️⃣ 专门用来处理冲突
- 3️⃣ 做代码对齐(diff / review)
- 4️⃣ PR / 合并的中间层
- 5️⃣ 出问题可以直接丢弃
- 五、完整标准流
- **本地分支和远程分支**
- 一、先给结论
- 二、三种“分支”要区分清楚
- 三、本地分支(Local Branch)
- 四、远程分支(Remote Branch)
- 五、远程跟踪分支(重点)
- 它什么时候更新?
- 举个关键例子
- 六、本地 vs 远程分支对比
- 七、它们之间怎么交互(核心流程)
- 1️⃣ 拉代码(fetch)
- 2️⃣ 合并代码
- 3️⃣ 推代码
- 八、一张结构图帮你彻底理解
👉“同步分支(sync branch)到底是什么、怎么建、有什么用”
我直接给你一个工程化视角的解释,不讲虚的。
一、什么是“同步分支”
先说结论:
同步分支 = 专门用来“承接上游(upstream)最新代码”的临时工作分支
它的核心特点:
- 基于
upstream/main - 用来做同步、对齐、处理冲突
- 不直接污染你自己的
main分支
二、你这条命令在干嘛
gitswitch-csync/upstream-20260421👉 这句的真实含义是:
创建一个新分支(名字叫 sync/…),并切换过去
但关键点在于:
⚠️ 如果你只是这样写:
gitswitch-csync/upstream-20260421👉 默认是:
从“当前分支”复制一份出来
✅ 标准(正确)建法
同步分支应该这样建:
gitfetch upstreamgitswitch-csync/upstream-20260421 upstream/main👉 这句非常重要,含义是:
从 upstream/main 这个“官方最新代码”创建一个新分支
三、同步分支是怎么“建立”的(本质)
本质其实就一句话:
把 upstream/main 复制一份,变成你自己的本地分支
结构会变成这样:
upstream/main (官方最新代码) ↓ sync/upstream-xxx (你新建的同步分支) ↓ main (你原来的分支,不动)四、为什么要搞一个“同步分支”(核心价值)
很多人直接在main上操作,这其实是危险的。
同步分支的价值在于👇
1️⃣ 避免污染主分支(最重要)
如果你直接在main上:
gitpull upstream main👉 一旦有冲突:
- main 会变脏
- 历史可能混乱
- 很难回滚
而用同步分支:
👉 所有“脏活”(冲突、试验)都在 sync 分支里完成
2️⃣ 专门用来处理冲突
典型流程:
gitmerge main# 把你自己的改动合进来👉 如果冲突:
- 在 sync 分支解决
- 不影响 main
3️⃣ 做代码对齐(diff / review)
你可以:
gitdiffmain👉 清楚看到:
官方更新了什么 vs 你本地有什么差异
4️⃣ PR / 合并的中间层
很多团队流程是:
upstream → sync 分支 → main → PR👉 sync 分支作为“缓冲区”
5️⃣ 出问题可以直接丢弃
如果搞乱了:
gitbranch-Dsync/upstream-20260421👉 直接删掉,重来
👉 主分支完全安全 ✅
五、完整标准流
# 1. 拉上游最新代码gitfetch upstream# 2. 基于 upstream 创建同步分支gitswitch-csync/upstream-20260421 upstream/main# 3. 把你自己的 main 合进来(可选)gitmerge main# 4. 解决冲突(如果有)# 5. 确认没问题后,再更新 maingitswitch maingitmerge sync/upstream-20260421本地分支和远程分支
一、先给结论
本地分支 = 你电脑里的分支(你直接操作)
远程分支 = 远程仓库里的分支(团队共享)
但真正关键的是下面这层👇
你本地看到的
origin/main其实不是远程分支本身,而是“远程分支的本地镜像(缓存)”
二、三种“分支”要区分清楚
在 Git 里其实有 3 种东西:
1️⃣ 本地分支 → main 2️⃣ 远程分支 → GitHub 上的 main 3️⃣ 远程跟踪分支 → origin/main(本地缓存)三、本地分支(Local Branch)
👉 例如:
gitbranch输出:
* main dev👉 特点:
- 在你电脑里
- 可以直接修改代码
- 可以提交(commit)
- 可以切换(switch)
👉 本质:
你正在开发用的“工作分支”
四、远程分支(Remote Branch)
👉 存在于 GitHub 上
例如:
origin/main origin/dev👉 特点:
- 在远程服务器
- 团队共享
- 你不能直接修改(必须 push)
👉 本质:
团队协作的“共享版本”
五、远程跟踪分支(重点)
👉 例如:
origin/main upstream/main👉 很多人误解的点在这里:
它是“远程分支在你本地的一个快照(缓存)”
它什么时候更新?
只有你执行:
gitfetch才会更新!
举个关键例子
远程已经有新提交了:
GitHub 上 main → B但你本地:
origin/main → A ❌ 还没更新 main → A执行:
gitfetch变成:
origin/main → B ✅ 更新了 main → A ❌ 还没变六、本地 vs 远程分支对比
| 项目 | 本地分支 | 远程分支 |
|---|---|---|
| 在哪 | 你电脑 | GitHub |
| 能不能直接改 | ✅ 可以 | ❌ 不行 |
| 是否自动同步 | ❌ 不会 | ❌ 不会 |
| 谁更新它 | 你自己 | push 操作 |
七、它们之间怎么交互(核心流程)
1️⃣ 拉代码(fetch)
gitfetch👉 更新:
origin/main👉 不影响:
main2️⃣ 合并代码
gitmerge origin/main👉 才会更新:
main3️⃣ 推代码
gitpush👉 更新远程:
origin/main → GitHub八、一张结构图帮你彻底理解
【远程仓库(GitHub)】 main ↑ | push | 【远程跟踪分支(本地缓存)】 origin/main ↑ | fetch | 【本地分支(你在用)】 main