📚 第一部分:Git 核心概念与基础
这部分是 Git 的"地基",理解了它们,后续的操作才会有清晰的脉络。
-
什么是 Git?
Git 是目前最主流的分布式版本控制系统,由 Linus Torvalds 于2005年为管理 Linux 内核开发而创造。它的核心优势在于:
-
分布式:每个开发者的本地都拥有完整的项目历史,不依赖中央服务器,可以离线工作。
-
高效与安全:底层使用SHA-1哈希值来保证数据的完整性,操作速度快。
-
-
四大工作区域
Git 管理文件,主要通过以下四个区域流转:
-
工作区 (Workspace):你电脑上实际编辑代码的目录。
-
暂存区 (Index/Stage):一个临时的存储区域,存放你准备提交的修改。它是工作区和版本库之间的缓冲地带。
-
本地仓库 (Local Repository) :你电脑上
.git文件夹,这里存储了项目所有提交记录和版本信息。 -
远程仓库 (Remote Repository):托管在服务器(如Gitee、GitHub)上的仓库,用于团队协作和备份。
-
-
初次运行前的配置
安装 Git 后,第一件事就是设置你的身份信息,这会记录在每一次提交里:
bash
git config --global user.name "你的用户名" git config --global user.email "你的邮箱" git config --list # 查看所有配置
🔧 第二部分:日常开发核心命令 (必会)
这套命令是每天开发都要用到的,构成了最基础的"增删改查"工作流。
| 分类 | 核心命令 | 功能说明 | 常用示例 |
|---|---|---|---|
| 仓库初始化 | git init |
在当前目录初始化一个新的 Git 仓库 | git init |
git clone <URL> |
克隆一个远程仓库到本地 | git clone https://gitee.com/xyoam/heart.git |
|
| 文件操作 | git status |
查看当前工作区和暂存区的文件状态 | git status / git status -s (精简模式) |
git add <文件> |
将工作区的改动添加到暂存区 | git add . (添加所有) / git add *.js |
|
git commit -m "说明" |
将暂存区的快照提交到本地仓库,生成一个版本记录 | git commit -m "feat: 添加登录功能" |
|
| 查看信息 | git log |
查看当前分支的提交历史 | git log --oneline --graph (图形化精简显示) |
git diff |
比较不同区域之间的代码差异 | git diff (工作区 vs 暂存区) |
|
| 远程协作 | git remote -v |
查看当前仓库关联的远程仓库地址 | git remote add origin <URL> (添加远程仓库) |
git push |
将本地分支的提交推送到远程仓库 | git push -u origin main (首次推送并关联) |
|
git pull |
从远程拉取最新代码并与当前分支合并 (fetch + merge) |
git pull origin main |
🌿 第三部分:分支管理 (团队协作的精髓)
分支是 Git 最强大的特性,它让你可以并行开发,互不干扰。
-
分支的本质与操作
分支本质上是一个指向提交对象的可变指针 ,而
HEAD指针则指向当前所在的分支。
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看分支 | git branch |
查看本地分支列表,当前分支前有 * 标记 |
| 创建分支 | git branch <分支名> |
在当前提交上创建一个新指针 |
| 切换分支 | git checkout <分支名> / git switch <分支名> |
switch 是 Git 2.23+ 推荐的新命令,语义更清晰 |
| 创建+切换 | git checkout -b <分支名> / git switch -c <分支名> |
日常最常用的快捷方式 |
| 删除分支 | git branch -d <分支名> |
删除已合并的分支;若未合并需用 -D 强制删除 |
| 合并分支 | git merge <分支名> |
将目标分支合并到当前分支 |
-
合并的两种主要场景
-
快进合并 (Fast-forward) :当目标分支(如
main)在分叉后没有新提交时,Git 只需将指针直接前移即可。这种模式不会创建新的合并提交。 -
三方合并 (Three-way Merge) :当两条分支都有新提交时,Git 会基于它们的共同祖先 进行合并,并创建一个新的合并提交来记录这次整合。
-
-
解决合并冲突
当不同分支修改了同一文件的同一区域时,Git 无法自动合并,产生冲突。解决步骤如下:
-
打开冲突文件,查找
<<<<<<< HEAD、=======、>>>>>>> [分支名]标记。 -
手动编辑文件,保留需要的内容,并删除所有冲突标记。
-
保存文件,用
git add将其标记为已解决。 -
执行
git commit完成合并提交。
-
🚀 第四部分:高级操作 (进阶必备)
掌握这些操作,能让你更灵活地应对复杂场景。
-
git rebase(变基)与
merge合并不同,rebase会将当前分支的提交"复制"到目标分支的最新提交之后,从而创造出一条更线性的提交历史。- 重要原则 :不要对已经推送到公共仓库的提交执行 rebase,否则会给协作者带来灾难。
-
撤销与改写历史
-
git commit --amend:修改最近一次提交的信息或补充漏掉的文件,不产生新的提交ID。 -
git reset:回退版本。--soft、--mixed(默认)、--hard三种模式对工作区和暂存区的影响不同。慎用--hard,它会丢弃所有未提交的改动。 -
git revert <提交ID>:通过创建一个新提交来撤销某次历史提交的改动。这是一种安全的方式,因为它是"向前"走的,不会改写历史,适合用于公共分支。
-
-
git stash(储藏)当你需要紧急切换分支,但当前工作区还有未完成的修改时,用
git stash可以将这些修改暂存起来,让你的工作区恢复干净。之后用git stash pop可以恢复这些修改。 -
git tag(标签)用于给项目在特定时间点(如版本发布时)打上标记,方便以后回溯。分为轻量标签和附注标签两种。
-
git reflog(引用日志)这是 Git 的"后悔药"。它会记录你在本地仓库的所有操作历史(包括已删除的提交)。当你误操作
reset后,可以用git reflog找到丢失的提交ID并恢复。
🤝 第五部分:主流协作工作流
在团队中,需要根据项目特点选择合适的工作流模式。
| 工作流模式 | 核心特点 | 适用场景 |
|---|---|---|
| Git Flow | 分支类型严格,包括 master、develop、feature/、release/、hotfix/ 等。 |
大型项目,有严格的发布周期和版本管理要求。 |
| GitHub / Gitee Flow | 流程简单,只有一个长期分支 main。所有开发都在 feature/ 分支进行,完成后通过 Pull Request (PR) 进行代码审查和合并。 |
敏捷开发,持续部署,追求快速迭代的团队。 |
| Forking Flow | 每个开发者都拥有自己 Fork 的远程仓库,通过向主仓库发起 PR 来贡献代码。 | 开源项目,外部贡献者数量不固定。 |
💎 核心心法总结
-
养成随时
git status的习惯:这是你了解当前仓库状态的"导航仪"。 -
小步提交,频繁推送:将每次提交限定为一个逻辑单元,并附上清晰说明。这不仅是好习惯,更是安全的保障。
-
公共分支历史禁改 :永远不要对已推送到公共仓库的
main或develop分支使用git reset或git rebase。 -
推送前先拉取 :开始工作前和推送代码前,先
git pull同步最新代码,这是避免冲突的最佳方式。