2、版本控制系统:Git的安装与配置、Git基本工作流程、常用Git命令
版本控制这件事,说白了就是给你的代码装上一台「时光机」。我见过太多新手直接把项目文件夹复制粘贴当备份,结果三天后自己都分不清哪个是最新版。Git 就是来解决这个问题的——它不光能记录每一次修改,还能让你在不同版本之间自由穿梭。
核心认知:Git 不是备份工具,而是一个分布式版本控制系统。每个开发者本地都有一份完整的代码仓库历史,即使服务器挂了,你也能在本地继续工作。
2.1 Git 的安装与配置
安装 Git 其实很简单,但不同操作系统略有差异。我个人习惯在 Linux 环境下工作,不过 Windows 和 macOS 也完全没问题。
2.1.1 各平台安装方式
| 操作系统 | 安装方式 | 验证命令 |
|---|---|---|
| Ubuntu/Debian | sudo apt install git |
git --version |
| CentOS/RHEL | sudo yum install git |
git --version |
| macOS | 安装 Xcode Command Line Tools 或 brew install git |
git --version |
| Windows | 下载 Git for Windows 安装包 | git --version(Git Bash 中) |
小技巧:安装完成后,第一件事就是配置你的身份信息。Git 每次提交都会记录作者,不配置的话会报错。
2.1.2 全局配置
配置用户名和邮箱,这是 Git 的「身份证」:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
还可以配置一些常用别名,提高效率。我一般会配这几个:
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.co checkout
git config --global alias.lg "log --oneline --graph --all"
配置完成后,用 git config --list 查看所有配置项。嗯,这里要注意——配置分三个级别:--system(系统级)、--global(用户级)、--local(仓库级),优先级从低到高。
2.2 Git 基本工作流程
Git 的工作流程,你想想看,其实就三个区域在来回倒腾:工作区、暂存区、版本库。我刚开始学的时候总搞混,后来画了张图才彻底明白。
工作流程其实就三步走:
- 在工作区修改文件——你打开编辑器,改代码、加文件、删文件,都在这里发生。
- 用
git add把改动放到暂存区——暂存区就像购物车,你可以挑挑拣拣,只提交想提交的部分。 - 用
git commit把暂存区的内容提交到版本库——每次提交都会生成一个唯一的哈希值,这就是一个历史版本。
我曾经踩过的坑:刚用 Git 时,我习惯一次性 git add . 把所有文件都扔进暂存区。结果有一次不小心把配置文件也提交了,里面还带着数据库密码。从那以后,我每次提交前都会用 git status 仔细检查,只提交该提交的文件。
2.3 常用 Git 命令
Git 命令很多,但日常开发中常用的就那么十几个。我把它们分成几类,方便你记忆。
2.3.1 仓库初始化与克隆
| 命令 | 作用 | 使用场景 |
|---|---|---|
git init |
在当前目录初始化一个新仓库 | 开始一个新项目 |
git clone <url> |
从远程仓库克隆到本地 | 参与已有项目 |
2.3.2 日常操作三板斧
这三个命令你每天都会用到,必须烂熟于心:
# 查看文件状态
git status
# 添加文件到暂存区
git add filename.txt # 添加单个文件
git add . # 添加所有改动
git add *.js # 添加所有 JS 文件
# 提交到版本库
git commit -m "feat: 添加用户登录功能"
提交信息怎么写?我建议遵循「约定式提交」规范:类型: 简短描述。比如 feat: 表示新功能,fix: 表示修复 bug,docs: 表示文档更新。这样看历史记录一目了然。
2.3.3 分支管理
分支是 Git 最强大的功能之一。你想想看,如果没有分支,所有人都在一条线上开发,改乱了怎么办?
# 查看分支
git branch # 查看本地分支
git branch -a # 查看所有分支(包括远程)
# 创建分支
git branch feature-login # 创建新分支
git checkout -b feature-login # 创建并切换到新分支
# 切换分支
git checkout feature-login
# 合并分支
git merge feature-login # 将 feature-login 合并到当前分支
我在项目中遇到过一个问题:两个同事同时修改了同一个文件的同一行代码,合并时就会产生冲突。这时候 Git 会告诉你哪些文件有冲突,你需要手动打开文件,找到冲突标记(<<<<<<<、=======、>>>>>>>),然后决定保留哪部分代码。
2.3.4 查看历史与回退
# 查看提交历史
git log # 完整历史
git log --oneline # 简洁版
git log --oneline --graph # 图形化显示分支
# 回退到某个版本
git reset --hard HEAD~1 # 回退到上一个版本
git reset --hard abc1234 # 回退到指定提交
# 撤销工作区的修改
git checkout -- filename.txt
注意:git reset --hard 会丢弃所有未提交的改动,慎用!我建议先用 git stash 暂存当前工作,再执行回退操作。
2.3.5 远程仓库操作
团队协作离不开远程仓库。GitHub、GitLab、Gitee 都是常见的托管平台。
# 添加远程仓库
git remote add origin https://github.com/yourname/project.git
# 推送代码到远程
git push origin main # 推送到 main 分支
git push -u origin main # -u 设置上游分支,后续可直接用 git push
# 拉取远程代码
git pull # 拉取并合并
git fetch # 只拉取,不合并
# 查看远程仓库信息
git remote -v
2.4 实战:一个完整的 Git 工作流
说了这么多,不如来一个完整的例子。假设你要开始一个新项目:
# 1. 初始化仓库
mkdir my-project
cd my-project
git init
# 2. 创建第一个文件
echo "# My Project" > README.md
git status # 看到 README.md 是未跟踪状态
# 3. 添加并提交
git add README.md
git commit -m "init: 初始化项目"
# 4. 创建开发分支
git checkout -b dev
# 5. 在 dev 分支上开发
echo "console.log('hello')" > app.js
git add app.js
git commit -m "feat: 添加 app.js"
# 6. 合并回主分支
git checkout main
git merge dev
# 7. 推送到远程
git remote add origin https://github.com/yourname/my-project.git
git push -u origin main
总结一下:Git 的核心就是「工作区 → 暂存区 → 版本库」这个流程。你只要记住 add、commit、push、pull 这四个命令,就能应付 80% 的日常场景。剩下的命令,遇到具体问题再查也来得及。