本文最后更新于47 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
一、基础概念与环境
- Git 核心作用:分布式版本控制系统,用于追踪文件变化、管理代码历史,支持多人协作开发。
- 关键概念:
- 仓库(Repository):存储代码和版本历史的目录。
- 提交(Commit):代码修改的快照,包含修改内容、作者、时间等信息,用哈希值唯一标识。
- 分支(Branch):独立的开发线路,默认主分支为
main
或master
,可创建分支并行开发。 - ** HEAD 指针 **:指向当前工作的分支或提交。
二、基础命令(入门关卡核心)
1. 提交与历史查看
git commit
:将暂存区的修改提交到本地仓库,生成新的提交记录。- git log:查看提交历史,显示提交哈希、作者、时间和提交信息。
- 简化显示:
git log --oneline
(每行显示一个提交,仅含哈希前 7 位和提交信息)。
- 简化显示:
2. 分支操作
git branch <分支名>
:创建新分支(基于当前 HEAD 指向的提交)。- git checkout <分支名>:切换到指定分支(HEAD 指针指向该分支)。
- 快捷创建并切换:
git checkout -b <分支名>
(等价于git branch <分支名>
+git checkout <分支名>
)。
- 快捷创建并切换:
git branch
:列出所有分支,*
表示当前分支。
3. 合并分支(merge
)
- 场景:将一个分支的修改整合到另一个分支(如功能分支合并到主分支)。
- 命令:bash git checkout main # 切换到目标分支
git merge <源分支> # 合并源分支到当前分支 - 效果:若合并无冲突,会创建一个新的 “合并提交”;若有冲突,需手动解决后再提交。
三、进阶操作(中级关卡核心)
1. 变基(rebase
)
- 作用:将一个分支的提交 “移动” 到另一个分支的基础上,使提交历史更线性。
- 命令:bash git checkout <待变基分支> # 切换到需要调整的分支
git rebase <目标分支> # 以目标分支为基准,重放当前分支的提交 - 注意:
- 变基会改写提交历史(哈希值改变),不要对已推送到远程的公共分支使用。
- 冲突处理:变基过程中若遇冲突,解决后用
git add .
标记,再执行git rebase --continue
继续,或用git rebase --abort
放弃。
2. 撤销操作
- git reset <提交哈希>:将当前分支重置到指定提交,丢弃该提交后的修改(默认 –mixed 模式,暂存区和工作区保留修改)。
- 危险操作:
git reset --hard <提交哈希>
(强制重置,工作区和暂存区修改全部丢弃)。
- 危险操作:
git revert <提交哈希>
:创建一个新提交,抵消指定提交的修改(安全,不改变历史,适合公共分支)。
3. 挑选提交(cherry-pick
)
- 作用:选择性复制单个或多个提交到当前分支,无需合并整个分支,灵活复用代码。
- 语法:bash git cherry-pick <提交哈希> # 复制单个提交
git cherry-pick <哈希1> <哈希2> # 复制多个不连续提交 - 应用场景:
- 从功能分支中挑选一个修复 bug 的提交到主分支(无需合并整个功能分支)。
- 复用其他分支的特定功能提交,避免无关代码混入。
4. 远程仓库交互
git clone <远程仓库URL>
:克隆远程仓库到本地。git push <远程仓库名> <本地分支名>
:将本地分支推送到远程仓库。git pull
:拉取远程仓库的最新修改并合并到当前分支(等价于git fetch
+git merge
)。
四、协作场景(高级关卡核心)
1. 多人协作流程
- 从远程主分支(
origin/main
)创建个人功能分支(feature/my-feature
)。 - 在功能分支开发并多次提交。
- 开发完成后,先
git pull origin main
同步远程主分支的最新修改(避免冲突)。 - 将功能分支推送到远程(
git push origin feature/my-feature
),发起合并请求(PR/MR)。 - 代码审核通过后,合并到主分支。
2. 解决合并冲突
- 当两个分支修改同一文件的同一部分时,合并或变基会产生冲突。
- 解决步骤:
- 冲突文件中会标记冲突区域(
<<<<<<< HEAD
到=======
为当前分支内容,=======
到>>>>>>> 分支名
为待合并分支内容)。 - 手动编辑文件,保留正确内容,删除冲突标记。
- 用
git add <冲突文件>
标记为已解决。 - 合并场景:
git commit
完成合并;变基场景:git rebase --continue
继续。
- 冲突文件中会标记冲突区域(
五、学习建议(基于平台特性)
- 可视化理解:利用平台的图形界面,观察每个命令对分支结构、提交历史的影响,加深对命令原理的理解。
- 关卡练习:按 “基础 → 中级 → 高级” 顺序挑战关卡,重点练习
merge
与rebase
的区别、冲突解决、远程协作等场景。 - 实际应用:学习后在本地仓库模拟协作流程(如创建分支、合并、解决冲突),巩固所学知识。
通过以上内容,可掌握 Git 日常开发的核心操作,应对大部分个人开发和团队协作场景。
学会了吧~ 接下来可以打关试试了~