4. Git基本操作
Git 这东西,说白了就是程序员的后悔药+时光机。我刚入行那会儿,觉得版本控制就是「Ctrl+C、Ctrl+V」的升级版,直到有一次我把整个项目改崩了,回退无门……嗯,从那以后我老老实实学了 Git。
今天咱们就把 Git 最核心的 7 个命令讲透。你想想看,日常开发中 80% 的场景,其实就靠这几个命令撑着。
4.1 git init:从零开始
你要用 Git 管理项目,第一步就是初始化。我个人习惯,拿到一个新项目,第一件事就是跑 git init。
# 在当前目录创建 Git 仓库
git init
# 在指定目录创建
git init my-project
跑完之后,目录下会多出一个 .git 文件夹。这就是 Git 的「大脑」——所有版本信息都藏在这里。千万别手贱删它,删了版本历史就全没了。
git init,哪怕只是写个 README。
4.2 git clone:拿来主义
如果你要接手别人的项目,或者从远程仓库拉代码,用 git clone。它会把整个仓库连同所有历史版本一起下载到本地。
# 克隆远程仓库
git clone https://github.com/user/repo.git
# 克隆并重命名本地目录
git clone https://github.com/user/repo.git my-folder
这里有个坑:克隆下来的仓库自带 .git 文件夹,你不需要再 git init。我见过有新手克隆完又跑了一次 git init,结果把远程关联搞丢了。
4.3 git status:随时查看状态
这个命令我一天能跑几十次。它告诉你:哪些文件改了、哪些还没提交、哪些是新加的。
git status
输出大概长这样:
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: index.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
new-style.css
git status,确认自己到底改了啥。有时候改着改着就忘了,一查才发现多改了几个文件。
4.4 git add:把改动装进「暂存区」
Git 的工作流分三步:工作区 → 暂存区 → 仓库。git add 就是把工作区的改动「打包」放进暂存区,等着提交。
# 添加单个文件
git add index.html
# 添加所有改动
git add .
# 添加当前目录所有 .js 文件
git add *.js
为什么要多一个暂存区?说白了,就是让你能「挑着提交」。比如你改了三个文件,但只想先提交两个,那就只 git add 那两个。
4.5 git commit:拍一张快照
git commit 就是把暂存区的内容正式保存到仓库里,生成一个版本记录。每次提交都要写一条消息,说明这次改了啥。
# 提交并写消息
git commit -m "修复了登录页面的样式问题"
# 提交时自动打开编辑器写详细消息
git commit
提交消息怎么写?我有个原则:让别人(包括未来的你)一眼看懂这次改了啥。别写「修复bug」这种废话,要写「修复了用户登录后跳转404的问题」。
git add,直接 git commit,结果提交了个空。后来养成了习惯:提交前先 git status 确认暂存区有东西。
4.6 git log:查看历史
想看看项目都经历了什么?git log 就是你的时光机。它会列出所有提交记录,包括作者、时间、消息。
# 查看完整日志
git log
# 一行显示,更简洁
git log --oneline
# 查看最近 3 条
git log -3
--oneline 是我最常用的参数。每个提交只显示一行,看起来特别清爽。你想想看,几十条提交挤在一起,用完整格式根本看不下去。
4.7 git diff:看看改了啥
提交之前,我习惯用 git diff 看看具体改了哪些内容。它能逐行对比文件的差异。
# 查看工作区 vs 暂存区的差异
git diff
# 查看暂存区 vs 上次提交的差异
git diff --staged
# 对比两个提交
git diff commit1 commit2
输出中,绿色开头的是新增的行,红色开头的是删除的行。我每次提交前都会扫一遍 git diff,确认没有误改或者漏改。
git diff,一眼就发现了问题。从那以后,git diff 成了我提交前的「安全检查」。
知识体系总览
下面这张图帮你理清这 7 个命令的关系:
实战场景:一次完整的提交流程
说了这么多,咱们来走一遍真实场景。假设你刚接手一个项目:
- 克隆项目:
git clone https://github.com/team/project.git - 查看状态:
git status—— 确认当前分支和文件状态 - 修改文件:编辑
index.html和style.css - 再次查看状态:
git status—— 看到两个文件被修改 - 查看具体改动:
git diff—— 确认改的内容没问题 - 添加到暂存区:
git add index.html style.css - 提交:
git commit -m "优化首页布局和样式" - 查看提交历史:
git log --oneline—— 确认提交成功
嗯,Git 的基本操作就这些。别觉得简单,真正的高手就是把基础命令用到极致。你想想看,那些复杂的 Git 工作流,底层不都是这几个命令在支撑吗?
可可精品资料库