一、Git简介:版本控制为什么必不可少?
版本控制系统(VCS)记录文件内容的变化,以便将来查阅特定版本的历史记录。Git是当前最先进的分布式版本控制系统。
核心概念:
-
工作区:电脑里能看到的项目目录。
-
暂存区(Stage/Index):一个中间区域,用于临时存放你的改动。
-
版本库(Repository):工作区有一个隐藏目录
.git,这就是Git的版本库,包含分支、提交历史等所有数据。
二、Git基础命令全解析(单人开发)
1. 创建仓库与基础配置
# 在当前目录初始化一个新的Git仓库
git init
# 配置用户信息(全局配置,一次即可)
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
2. 文件生命周期与核心操作
# 查看工作区和暂存区的状态(最常用的命令)
git status
# 将文件的修改添加到暂存区
git add <file_name>
git add . # 添加所有变化
# 将暂存区的内容提交到版本库,创建一个新的版本
git commit -m "Your commit message describing the changes"
# 查看提交历史
git log
git log --oneline --graph # 更简洁的图形化显示
3.撤销与回退
# 撤销工作区的修改(危险!不可恢复)
git checkout -- <file_name>
# 将文件从暂存区撤回到工作区
git reset HEAD <file_name>
# 创建一个新的提交来撤销某次提交的更改(安全,推荐)
git revert <commit_id>
# 回退到某个提交(会丢失历史,谨慎使用)
git reset --hard <commit_id>
三、分支管理:Git的杀手锏功能
分支让你可以在主线上分离出去进行工作,而不影响主线。
1. 基础分支操作
# 查看所有分支
git branch
# 创建新分支
git branch <branch_name>
# 切换分支
git checkout <branch_name>
# 或者(更新版本的命令)
git switch <branch_name>
# 创建并切换到新分支
git checkout -b <branch_name>
git switch -c <branch_name>
2.. 合并分支与解决冲突
# 假设我们在 feature/login 分支上开发了新功能,现在要合并到 main 分支
# 1. 切换到主分支
git switch main
# 2. 合并功能分支
git merge feature/login
# 如果两个分支对同一文件的同一部分进行了不同的修改,就会产生冲突。
# Git会标记出冲突内容,形如:
<<<<<<< HEAD
Current change on main branch
=======
New change from feature/login branch
>>>>>>> feature/login
# 3. 手动解决冲突:编辑文件,删除标记,保留你想要的内容。
# 4. 将解决后的文件添加到暂存区并提交。
git add <resolved_file>
git commit -m "Merge branch 'feature/login' and resolve conflicts"
3. 变基:另一种整合分支的方式
# 在 feature/login 分支上执行
git rebase main
Rebase 会将当前分支的提交“复制”到目标分支(main)的最新提交之后,形成一条直线的历史。它比Merge的历史更清晰,但不要对已推送到公共仓库的提交执行Rebase。
四、团队协作流程:Git Flow与PR/MR
1. 远程仓库操作
# 克隆远程仓库到本地
git clone https://github.com/username/repo.git
# 查看远程仓库
git remote -v
# 将本地提交推送到远程仓库
git push origin main
# 从远程仓库拉取更新并合并到当前分支
git pull origin main
# 相当于 git fetch + git merge
2. 经典的Git Flow工作流
这是一个非常流行的分支模型,适合有固定发布周期的项目。
-
main/master:主分支,代码永远处于稳定可发布状态。
-
develop:开发分支,包含所有要发布到下一个版本的功能。
-
feature/:功能分支,从develop拉出,用于开发新功能,完成后合并回develop。
-
release/:发布分支,从develop拉出,用于测试和修复bug,完成后合并到main和develop。
-
hotfix/:热修复分支,从main拉出,用于紧急修复线上bug,完成后合并到main和develop。
3. 基于Pull Request(PR)/ Merge Request(MR)的协作流程(以GitHub为例)
这是现代开源项目和很多公司团队的首选。
-
Fork仓库:将目标仓库复制到自己的账户下。
-
克隆Fork的仓库:
git clone your-forked-repo-url -
创建功能分支:
git checkout -b my-feature -
开发并提交:完成代码修改,进行多次commit。
-
推送到个人远程仓库:
git push origin my-feature -
发起Pull Request:在GitHub上,从你的
my-feature分支向原项目的develop或main分支发起PR。 -
代码审查与讨论:团队成员在PR页面上审查代码、提出意见。
-
合并PR:审查通过后,项目维护者将你的分支合并到主分支。
这种方式强制了代码审查,极大地提高了代码质量和团队协作效率。
五、总结与最佳实践
通过本文,我们系统地学习了Git:
-
核心概念与基础命令,满足单人开发需求。
-
分支管理的强大能力,包括Merge和Rebase。
-
现代化的团队协作流程(Git Flow & PR)。
最佳实践建议:
-
提交信息清晰:使用祈使句,说明本次提交的目的。
-
提交原子化:一次提交只做一件事,便于回滚和审查。
-
频繁提交:将工作分解成小块,避免巨大的单次提交。
-
开始工作前先拉取:
git pull更新本地代码,减少冲突。 -
遵守团队规范:统一的分支命名、工作流和提交信息格式。
掌握Git,不仅是掌握一个工具,更是掌握一种高效协作的思维方式。
357

被折叠的 条评论
为什么被折叠?



