Git 版本控制核心命令与实战指南
一、Git 简介与环境准备
Git 是一款分布式版本控制软件,主要用于管理代码的历史变更。想象一下写文档时保存了多个版本(如'初稿'、'修改版'、'终稿'),Git 就是用来自动化管理这些不同版本之间的切换与对比的工具。
1. 安装与配置
安装过程较为简单,网上教程众多。安装完成后,建议先配置用户信息,这样每次提交都会带上你的身份标识:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
2. 使用环境说明
推荐使用 Git Bash 或终端命令行进行操作,而不是 Windows 自带的 CMD。Git Bash 提供了类 Linux 的命令体验(如 ls, mkdir 等),操作更便捷且支持文件颜色区分。
二、基础工作流程
所有 Git 操作通常都在项目根目录下进行。假设我们有一个名为 MyProject 的文件夹。
1. 初始化仓库
将普通文件夹变为 Git 仓库的第一步是执行初始化:
git init
执行后,当前目录会生成一个隐藏的 .git 文件夹,这里存储了所有的版本控制信息。相比直接拷贝整个项目,这种方式更节省空间,因为后续提交只记录差异内容。
2. 状态查看与暂存
在提交前,我们需要了解文件的变动情况。
查看状态:
git status
- 红色:表示未跟踪的新文件或已修改但未暂存的文件。
- 绿色:表示已添加到暂存区(Staging Area)的文件。
- 白色:表示已提交到仓库的文件。
添加文件到暂存区:
git add <文件名>
# 或者添加当前目录下所有文件
git add .
此时再次运行 git status,文件应变为绿色,表示已准备好提交。
3. 提交快照
将暂存区的更改正式保存到历史记录中:
git commit -m "本次提交的说明信息"
注意:
-m参数后的说明信息非常重要,它决定了你未来如何快速定位某次改动。建议使用清晰简洁的描述,例如'修复登录模块 Bug'而非'更新'。
提交成功后,工作树应显示 clean,表示没有未提交的变动。
三、高级版本管理
1. 版本回滚
如果提交了错误的代码,可以使用 reset 命令回退到之前的版本。
git reset --hard <版本号>
版本号可以通过 git log 查看。该命令会将工作区和暂存区强制重置到指定版本,请谨慎使用,因为它会丢失未提交的更改。
2. 找回丢失的记录
如果误操作回滚了历史,可以使用 reflog 找回所有曾经指向过的 HEAD 记录:
git reflog
这能列出所有 HEAD 指针的移动历史,即使某些提交不在当前的 git log 分支线上,也能通过此命令找到对应的版本号并恢复。
3. 代码暂存 (Stash)
当你在开发新功能时,发现需要紧急修复 Bug,但当前代码还没写完无法提交,这时可以用 Stash 暂存现场:
git stash # 暂存当前修改
git stash list # 查看暂存列表
git stash pop # 恢复最近一次暂存
git stash apply # 恢复指定编号的暂存
提示:恢复时若涉及同一文件的冲突,需手动解决。实际工作中,基于分支处理 Bug 更为常见。
四、分支管理
分支是 Git 的核心特性之一,用于隔离不同的开发任务。
1. 创建与切换
git branch <分支名> # 创建分支
git checkout <分支名> # 切换分支
# 或者一步完成创建并切换
git checkout -b <分支名>
切换到新分支后,在该分支下的修改不会影响主分支(master)。
2. 合并分支
当功能开发完成后,将其合并回主分支:
git checkout master
git merge <分支名>
合并过程中可能会产生冲突(Conflict),通常是因为双方修改了同一个文件的同一部分。此时需要手动编辑文件解决冲突,然后重新提交。
最佳实践:遇到紧急 Bug 时,建议从 master 切出一个
bugfix分支修复,测试无误后再合并回 master,最后删除临时分支。
五、远程协作规范
为了在不同设备间同步代码,我们需要连接远程仓库(如 GitHub、Gitee 等)。
1. 关联远程仓库
git remote add origin <远程仓库地址>
2. 推送与拉取
- 推送本地代码到远程:
git push origin master - 从远程拉取最新代码:
git pull origin master - 克隆远程仓库到本地:
git clone <远程仓库地址>
3. 忽略文件 (.gitignore)
项目中不需要上传的文件(如编译产物、依赖包、配置文件)应写入 .gitignore 文件。Git 会自动忽略这些文件,避免污染仓库。
4. 版本标签 (Tag)
对于重要的发布版本,可以使用 Tag 进行标记:
git tag v1.0.0
这有助于快速定位特定版本的代码状态。
六、团队协作建议
在实际开发中,通常遵循以下流程:
- 主分支策略:维护
master(生产环境)、dev(开发环境)和feature(功能分支)。 - 代码审查 (Code Review):开发人员将代码合并到
review分支,由组长或资深成员检查无问题后,再合并入dev。 - Pull Request:在开源或大型项目中,通过 Fork 项目并提交 Pull Request 来贡献代码。
安全提醒:切勿将公司敏感代码推送到个人公共仓库,确保代码资产安全。
掌握上述命令与流程,即可高效地进行版本控制与团队协作。多动手练习,熟悉每个命令的实际效果,是成为熟练开发者的必经之路。
