sourcetree中的“master“,“origin/master“,“origin/HEAD“这三个图标都是什么意思?GIT 超详细➕通俗易懂版本
1. master
(本地主分支)
• 含义:
• 这是你本地仓库的默认主分支,所有本地代码变更默认在此分支上提交。
• 在图片中,master
分支右侧的提交记录(如 f6c2c02
)表示你本地分支的最新提交。
• 图中场景:
• 当前本地分支为 master
,最新提交是 f6c2c02
(提交信息为 V1.0
)。
• 文件列表中的 HelloWorld.txt
可能已被修改但尚未提交(底部有「提交」按钮待操作)。
2. origin/master
(远程主分支的引用)
• 含义:
• 这是远程仓库(通常命名为 origin
)中 master
分支的本地镜像,用于跟踪远程仓库的更新。
• 它不会自动更新,需通过 git fetch
或点击「获取」按钮(图中顶部操作栏)同步远程状态。
• 图中场景:
• origin/master
的提交哈希为 3458323
(提交信息为 Initial commit
),表示远程仓库的 master
分支最后一次同步到本地的状态。
• 如果你本地 master
分支的提交(f6c2c02
)未推送到远程,origin/master
会落后于本地分支。
3. origin/HEAD
(远程默认分支的指针)
• 含义:
• 这是远程仓库的默认分支标识,通常指向 origin/master
(如果远程主分支是 master
)。
• 当你在终端执行 git clone
时,克隆的默认分支就是 origin/HEAD
指向的分支。
• 图中场景:
• origin/HEAD
和 origin/master
指向同一个提交 3458323
,说明远程仓库的默认分支是 master
。
• 如果远程仓库将默认分支改为 main
,origin/HEAD
会指向 origin/main
。
三者的关系图示
本地仓库 远程仓库(origin)
┌───────────────┐ ┌───────────────┐
│ master │ ← 可推送/拉取 →│ master │
│ (f6c2c02) │ │ (3458323) │
└───────────────┘ └───────────────┘
↑ ↑
│ │
│ origin/master ───────┘
│ (3458323)
│
└─── origin/HEAD 始终指向远程默认分支
关键区别总结
名称 | 作用范围 | 更新方式 | 图中状态 |
---|---|---|---|
master | 本地 | 本地提交 | 最新提交为 f6c2c02 |
origin/master | 远程镜像 | 通过 获取 按钮同步远程 | 落后于本地,提交 3458323 |
origin/HEAD | 远程标识 | 随远程仓库默认分支设置改变 | 指向 origin/master |
实际场景操作
-
推送本地代码:
• 点击「推送」按钮,将本地master
分支的f6c2c02
提交推送到远程,使origin/master
更新为与本地一致。 -
同步远程变更:
• 点击「获取」按钮,若远程有更新,origin/master
会显示最新提交,之后可点击「合并」将变更整合到本地master
。 -
切换默认分支:
• 若远程仓库将默认分支从master
改为main
,origin/HEAD
会自动指向origin/main
(需重新获取)。
通俗易懂版本:
1. master
(你手里的笔记本)
• 这是你电脑上的最新版本,就像你正在写的笔记本。
• 图中的情况:你刚写了 V1.0
版本(提交记录 f6c2c02
),但还没把本子传给其他人。
2. origin/master
(别人手里的你的笔记本副本)
• 这是远程仓库(比如 GitHub)上的最新版本,相当于别人手里的你的笔记本复印件。
• 图中的情况:别人手里的复印件还是 Initial commit
(提交 3458323
),因为你没把你的新内容 V1.0
传给他们。
3. origin/HEAD
(别人默认看哪个本子)
• 这是远程仓库的“封面”标签,告诉别人默认该看哪个分支。
• 图中的情况:远程仓库的封面贴的是 master
分支,所以 origin/HEAD
和 origin/master
指向同一个版本。
举个栗子 🌰
- 你写了一本小说(
master
),最新章节是V1.0
。 - 出版社(远程仓库)手里的还是你最早的大纲(
origin/master
)。 - 出版社的官网(
origin/HEAD
)写着:“默认看最新版小说”,但实际最新版还没传过去。
你要做的:把 V1.0
发给出版社(点「推送」按钮),他们的 origin/master
就会和你的一样了!
一句话总结
• master
:你电脑上的最新版本。
• origin/master
:网上仓库的最新版本(可能比你旧)。
• origin/HEAD
:告诉别人网上仓库默认看哪个版本。