Git 开发必备技能
一、为什么需要 Git?
在接触 Git 之前,我们项目目录只是一个普通的本地文件夹。这种工作方式存在三个明显的痛点:
第一,多人协作无从下手。 单机版本意味着代码只存在于一个人的电脑上,团队成员之间想要共享代码,只能靠 U 盘拷贝或者网络传输,效率极低且容易出错。Git 采用分布式架构,每个人本地都有一份完整的代码仓库,同时通过中央仓库(如 GitHub、Gitee、GitLab)作为枢纽,团队成员可以随时拉取和推送代码,真正实现了高效协作。
第二,无法追溯历史版本。 想象一下,某天你修改了一个文件,一周后发现出了问题,想找回之前的版本,但旧内容早已被覆盖。Git 的核心能力就是版本管理——每一次 commit 都是项目的一个快照,你可以随时回退到任意历史版本,相当于给代码上了"时光机"。
第三,工程化程度不够。 手动的文件管理方式缺乏标准流程,改了什么、谁改的、什么时候改的,全靠记忆。Git 提供了一套完整的版本控制规范,让软件开发从"手工作坊"走向"工程化流水线"。
二、git init —— 一切从初始化开始
git init
这条命令将普通的项目目录升级为带有版本控制能力的 Git 仓库。初始化后,目录下会多出一个 .git 隐藏文件夹(用 ls -all 可以看到)。这个文件夹是 Git 的核心,存储着仓库的所有配置、对象和引用。
重要提醒: .git 目录不要手动乱改。如果你想操作仓库,请始终通过 Git 命令来完成,不要直接编辑 .git 里面的文件。
另外,Windows 和 Linux 的 Shell 环境不同,建议在项目目录下使用 Git Bash,它提供了一个最简版的 Linux 命令行环境,让 Windows 用户也能获得一致的 Git 操作体验。
三、git add —— 将修改放入暂存区
git add readme.md
这条命令将文件添加进暂存区(stage)。Git 会告诉你做了多少行新增和删除,比如 2 insertions 表示新增了 2 行内容。
暂存区的设计非常精妙——它允许你"中途休息"。你可以多次执行 git add 来累积变更,而不产生新的版本记录。这意味着在完成一个开发任务的过程中,你可以分段保存进度,而仓库本身保持干净。
四、git commit —— 生成版本快照
git commit -m "描述信息"
commit 将暂存区中的所有内容正式提交到仓库,形成一个不可变的版本记录。-m 后面的描述信息不能乱写,因为你的 Leader 和同事主要就是通过提交信息来了解你做了什么。一个好的提交信息应该简短清晰,让人一眼就知道这次提交的目的。
五、为什么要分两条命令?
新手可能会疑惑:为什么不能一步到位把文件加到仓库?非要先 add 再 commit?
答案在于原子性。假设你在开发"首页页面功能",涉及三个文件:index.html、common.css、common.js。你可以这样做:
git add index.html
git add common.css
git add common.js
git commit -m "首页页面功能"
多次 add,一次 commit——这样三个文件的修改被打包进同一个版本,逻辑上完整且清晰。而如果中途你发现 common.css 的修改不够好,还可以利用暂存区的灵活性"提前后悔",调整之后再 commit。
核心原则:
add多次,commit一次(对应一个完整的开发任务)。
六、git status —— 你的指路明灯
git status
这是我学到的最重要的一条建议:任何时刻,当你需要了解仓库当前状态时,执行 git status;在做出任何关键操作前,执行 git status。
它像一面镜子,清楚地告诉你:
- 哪些文件是未跟踪的(untracked)
- 哪些文件已暂存待提交(to be committed)
- 哪些文件有修改但尚未暂存
养成这个习惯,可以避免绝大多数 Git 操作失误。
七、文件状态流转
Git 中的文件生命周期可以概括为:
Untracked(未跟踪) → Staged(已暂存) → Committed(已提交)
- Untracked:新创建的文件,Git 尚未跟踪
- Staged:通过
git add加入暂存区,等待commit - Committed:通过
git commit提交到了仓库,此时文件被安全保管
始终保持仓库的"干净"状态——即 git status 后不出现意外文件——是一个良好的开发习惯。
八、连接远程仓库
本地仓库的能力终究有限。真正的团队协作需要远程仓库(remote):
git remote add origin <仓库地址>
通过 git push 将本地代码推送到远程,通过 git pull 从远程拉取最新代码。这样,团队的每个人都拥有本地仓库的完整副本,同时以远程仓库为中心进行同步——这就是 Git 分布式架构的精髓。
总结
| 命令 | 作用 |
|---|---|
git init | 初始化本地仓库 |
git add <文件> | 将文件加入暂存区 |
git commit -m "描述" | 提交暂存区内容到仓库 |
git status | 查看当前仓库状态 |
git remote add origin <地址> | 关联远程仓库 |
Git 的学习曲线可能稍陡,但一旦理解了这三层模型——工作区 → 暂存区 → 仓库——后续的操作都是在这个框架上的延伸。多实践,多敲命令,让 git status 成为肌肉记忆,你就能真正驾驭版本控制,成为更专业的开发者。