Git 人话词典:看到一个词,先判断代码在哪
Repository / Repo / 仓库
一个由 Git 管理的项目,包含当前文件和版本历史。
你会在这些场景遇到:GitHub 上的项目页面、本地带 .git 记录的项目文件夹。
具体例子:tiny-notes 是仓库名;里面的 docs/index.md 只是仓库中的一个文件。
Local / 本地
你的电脑。
你在编辑器里修改的文件、还没 Push 的 commit,都可能只存在本地。别人暂时看不到。
Remote / 远程
互联网上的 Git 仓库位置,常见托管在 GitHub。
它不一定叫 GitHub,也可能是 GitLab、公司服务器或其他服务。
Origin
Git Clone 时通常自动给远程仓库起的简称。
bash
git remote -v如果你 Clone 自己的项目,origin 通常是你的远程仓库。如果你 Clone 自己的 Fork,origin 通常是你的 Fork。
Upstream
参与别人的开源项目时,通常把原作者仓库登记为 upstream。
text
origin 我的 Fork
upstream 原作者仓库它是常用命名习惯,不是 Git 的特殊魔法词。
Working Tree / 工作区
你此刻在编辑器中看到和修改的项目文件。
文件刚保存时,变化先出现在工作区。git diff 可以查看这些尚未加入待提交清单的变化。
Staging Area / 暂存区
下一次 commit 的待保存清单。
bash
git add docs/index.md这条命令把 docs/index.md 当前变化放进清单,并没有上传。
Commit
一组已经选好、带说明的版本存档。
bash
git commit -m "修正首页标题"Commit 属于某条分支,刚创建时通常只在本地。
Branch / 分支
从某个版本开始的一条独立修改路线。
用在:开发新功能、修错误、做实验、准备 PR。它让你不必直接在 main 上边试边改。
Main
许多仓库的默认主分支名称,通常代表当前正式整合的版本。
不是所有仓库都叫 main,旧项目也可能叫 master,团队还可能使用其他名称。
HEAD
Git 用来表示“我现在查看的是哪个版本”的指针。
日常看到 HEAD -> main,可以先读成“我目前站在 main 的最新本地 commit 上”。
Clone
第一次把远程仓库完整复制到电脑,并自动记录来源。
bash
git clone 仓库地址本地已经有仓库以后,更新通常不再重复 Clone。
Fork
在 GitHub 上把别人的远程仓库复制到自己的账号。
Fork 在云端发生;Clone 才把仓库放到电脑。给没有写入权限的开源项目贡献时,经常先 Fork 再 Clone。
Fetch
下载远程最新版本信息,但先不改变当前文件。
适合想先看看远程有什么变化,再决定怎样合并。
Pull
把远程更新取回,并尝试合入当前分支。通常包含 Fetch 和后续整合。
bash
git pull --ff-only它和 Pull Request 不是一件事。
Push
把本地 commit 上传到远程仓库。
bash
git pushPush 不一定等于部署,也不一定进入 main;它只是把某条分支的版本上传。
Pull Request / PR
GitHub 上的检查和合并申请。
它比较两条分支,集中展示说明、commit、逐行变化、自动检查和审核意见。
Review
其他人检查 PR,可以批准、留言或要求修改。
Review 的目标不是证明谁更懂,而是在代码进入主分支前发现问题、补充背景。
Merge
把一条开发路线的结果整合进另一条分支。
PR Merge 后,变化通常进入 main;但你的本地 main 还需要 Pull 才能拿到远程结果。
Conflict / 冲突
两条路线修改了同一位置,Git 无法判断应该保留哪一边。
冲突不是文件必然损坏,而是 Git 要求人来决定最终业务内容。
一张位置地图
text
工作区
↓ git add
暂存区
↓ git commit
本地分支
↓ git push
远程分支
↓ Pull Request + Merge
远程 main
↓ git pull
本地 mainorigin 一定代表原作者仓库吗?
答案:不一定。origin 通常只是 Clone 时自动记录的远程简称。Clone 自己的 Fork 时,origin 就是自己的 Fork;原作者仓库常另外命名为 upstream。