Git Glossary
本章提供了 Git 中常用术语的详细解释,帮助你更好地理解和使用 Git。
A
Add(添加)
将文件从工作区添加到暂存区的操作。
git add filename.txt
git add . # 添加所有文件Annotated Tag(带注释的标签)
包含额外信息(如作者、日期、消息)的标签。
git tag -a v1.0.0 -m "Release version 1.0.0"Atomic Commit(原子提交)
一个逻辑上完整且不可分割的提交,包含相关的更改。
B
Branch(分支)
指向特定提交的可移动指针,用于并行开发。
git branch feature-login
git checkout -b feature-loginBare Repository(裸仓库)
没有工作区的 Git 仓库,通常用作远程仓库。
git clone --bare my-project my-project.gitBisect(二分查找)
使用二分法查找引入 bug 的提交。
git bisect start
git bisect bad
git bisect good commit_hashBlob(二进制大对象)
Git 中存储文件内容的对象类型。
C
Checkout(检出)
切换分支或恢复文件的操作。
git checkout main
git checkout -- filename.txtCherry-pick(挑选)
将特定提交应用到当前分支。
git cherry-pick commit_hashClone(克隆)
创建远程仓库的本地副本。
git clone https://github.com/user/repo.gitCommit(提交)
将暂存区的更改保存到版本库的操作。
git commit -m "Add new feature"Commit Hash(提交哈希)
唯一标识提交的 SHA-1 哈希值。
# 示例:a1b2c3d4e5f6789012345678901234567890abcdConflict(冲突)
当合并或变基时,两个分支修改了同一文件的同一部分。
Conventional Commits(约定式提交)
标准化的提交信息格式。
feat(auth): add OAuth login support
fix(ui): resolve mobile navigation issueD
Detached HEAD(分离头指针)
HEAD 指向特定提交而不是分支的状态。
git checkout commit_hash # 进入分离头指针状态Diff(差异)
显示文件或提交之间的差异。
git diff
git diff HEAD~1 HEADDistributed Version Control(分布式版本控制)
每个开发者都有完整仓库副本的版本控制系统。
F
Fast-forward(快进)
当目标分支没有新提交时的合并方式。
# 快进合并不创建新的合并提交
A---B---C (main)
\
D---E (feature)
# 合并后:A---B---C---D---E (main)Fetch(获取)
从远程仓库下载对象和引用,但不合并。
git fetch originFork(分叉)
在 GitHub 等平台上创建仓库的个人副本。
G
Git Flow
一种基于分支的开发工作流模型。
- main/master:生产分支
- develop:开发分支
- feature/*:功能分支
- release/*:发布分支
- hotfix/*:热修复分支
GitHub Flow
简化的工作流程,主要使用 main 分支和功能分支。
Gitignore
指定 Git 应该忽略的文件和目录的配置文件。
# .gitignore 示例
*.log
node_modules/
.envH
HEAD
指向当前分支最新提交的指针。
git log HEAD
git reset HEAD~1Hash(哈希)
Git 使用 SHA-1 算法生成的唯一标识符。
Hook(钩子)
在特定 Git 事件发生时自动执行的脚本。
# 常见钩子
pre-commit # 提交前
post-commit # 提交后
pre-push # 推送前Hotfix(热修复)
针对生产环境紧急问题的快速修复。
I
Index(索引)
暂存区的另一个名称,存储下次提交的内容。
Init(初始化)
创建新的 Git 仓库。
git init
git init --bare # 创建裸仓库Issue(问题)
在 GitHub 等平台上跟踪 bug、功能请求或任务的工具。
L
Log(日志)
显示提交历史。
git log
git log --oneline
git log --graphLightweight Tag(轻量标签)
简单的提交引用,不包含额外信息。
git tag v1.0.0M
Merge(合并)
将两个或多个分支的更改整合到一起。
git merge feature-branch
git merge --no-ff feature-branch # 非快进合并Merge Conflict(合并冲突)
当合并时两个分支修改了同一文件的同一部分。
Master/Main(主分支)
仓库的默认主分支,通常包含稳定的代码。
O
Origin(源)
默认远程仓库的名称。
git remote add origin https://github.com/user/repo.gitOrphan Branch(孤立分支)
没有父提交的分支。
git checkout --orphan gh-pagesP
Pull(拉取)
从远程仓库获取更改并合并到当前分支。
git pull origin main
# 等同于
git fetch origin
git merge origin/mainPull Request(拉取请求)
在 GitHub 等平台上请求将更改合并到目标分支的机制。
Push(推送)
将本地更改上传到远程仓库。
git push origin main
git push -u origin feature-branch # 设置上游分支R
Rebase(变基)
将一系列提交重新应用到另一个基础提交上。
git rebase main
git rebase -i HEAD~3 # 交互式变基Reflog(引用日志)
记录 HEAD 和分支引用变化的日志。
git reflog
git reflog show branch-nameRemote(远程)
其他仓库的引用,通常在网络上。
git remote -v
git remote add upstream https://github.com/original/repo.gitRepository(仓库)
包含项目文件和完整版本历史的目录。
Reset(重置)
移动 HEAD 和当前分支指针到指定提交。
git reset --soft HEAD~1 # 保留更改在暂存区
git reset --mixed HEAD~1 # 保留更改在工作区
git reset --hard HEAD~1 # 丢弃所有更改Revert(撤销)
创建新提交来撤销之前的更改。
git revert commit_hashS
SHA(安全哈希算法)
Git 使用 SHA-1 算法生成提交的唯一标识符。
Staging Area(暂存区)
准备下次提交的文件存储区域。
git add file.txt # 添加到暂存区
git reset HEAD file.txt # 从暂存区移除Stash(储藏)
临时保存工作区和暂存区更改的功能。
git stash
git stash pop
git stash listSubmodule(子模块)
将一个 Git 仓库作为另一个仓库的子目录。
git submodule add https://github.com/user/lib.git libSwitch(切换)
Git 2.23+ 引入的分支切换命令。
git switch main
git switch -c new-branchT
Tag(标签)
指向特定提交的不可移动引用,通常用于标记版本。
git tag v1.0.0
git tag -a v1.0.0 -m "Release version 1.0.0"Three-way Merge(三方合并)
使用两个分支和它们的共同祖先进行的合并。
Tracking Branch(跟踪分支)
与远程分支关联的本地分支。
git branch --set-upstream-to=origin/main mainTree(树)
Git 中表示目录结构的对象类型。
U
Untracked Files(未跟踪文件)
不在 Git 版本控制下的文件。
git status # 显示未跟踪文件
git add . # 添加所有未跟踪文件Upstream(上游)
当前分支跟踪的远程分支。
git push -u origin feature-branch # 设置上游分支W
Working Directory(工作目录)
包含项目文件的目录,可以编辑文件的地方。
Working Tree(工作树)
工作目录中被 Git 跟踪的文件集合。
Worktree(工作树)
允许同时检出同一仓库的多个分支到不同目录。
git worktree add ../feature-branch feature-branch常用 Git 命令速查
基础操作
git init # 初始化仓库
git clone <url> # 克隆仓库
git add <file> # 添加文件到暂存区
git commit -m "message" # 提交更改
git status # 查看状态
git log # 查看历史分支操作
git branch # 查看分支
git branch <name> # 创建分支
git checkout <branch> # 切换分支
git checkout -b <branch> # 创建并切换分支
git merge <branch> # 合并分支
git branch -d <branch> # 删除分支远程操作
git remote -v # 查看远程仓库
git fetch # 获取远程更新
git pull # 拉取并合并
git push # 推送更改
git push -u origin <branch> # 推送并设置上游撤销操作
git checkout -- <file> # 撤销工作区更改
git reset HEAD <file> # 撤销暂存区更改
git reset --soft HEAD~1 # 撤销提交(保留更改)
git reset --hard HEAD~1 # 撤销提交(丢弃更改)
git revert <commit> # 撤销特定提交查看和比较
git diff # 查看工作区差异
git diff --staged # 查看暂存区差异
git diff <commit1> <commit2> # 比较提交
git show <commit> # 查看提交详情
git blame <file> # 查看文件修改历史Git 工作流程图
工作区 (Working Directory)
↓ git add
暂存区 (Staging Area)
↓ git commit
本地仓库 (Local Repository)
↓ git push
远程仓库 (Remote Repository)分支模型图
Git Flow:
main ────●────●────●────●────
│ │ │ │
develop ─●────●────●────●────
│ │ │
feature ─●────●────●
│
release ──────●────●
│
hotfix ────────────●提交状态图
Untracked → Staged → Committed
↑ ↑ ↑
git add git add git commit
↓ ↓ ↓
Modified ← Modified ← Modified总结
这个术语表涵盖了 Git 中最重要的概念和术语:
核心概念
- 仓库:项目的完整版本历史
- 提交:项目状态的快照
- 分支:并行开发的工具
- 合并:整合不同分支的更改
重要操作
- 添加:将更改加入暂存区
- 提交:保存更改到版本历史
- 推送:上传到远程仓库
- 拉取:从远程仓库获取更新
高级功能
- 变基:重写提交历史
- 储藏:临时保存更改
- 标签:标记重要版本
- 钩子:自动化工作流
理解这些术语将帮助你:
- 📚 更好地阅读 Git 文档
- 💬 与团队成员有效沟通
- 🔧 正确使用 Git 功能
- 🚀 提高开发效率
掌握了这些基本术语,你就具备了深入学习和使用 Git 的基础知识。