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 那两个。

核心概念: 暂存区是 Git 最巧妙的设计之一。它让你能精细控制每次提交的内容,而不是一股脑全塞进去。

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 add git commit git init / git clone git status / git diff git log Git 基本操作流程

实战场景:一次完整的提交流程

说了这么多,咱们来走一遍真实场景。假设你刚接手一个项目:

  1. 克隆项目:git clone https://github.com/team/project.git
  2. 查看状态:git status —— 确认当前分支和文件状态
  3. 修改文件:编辑 index.html 和 style.css
  4. 再次查看状态:git status —— 看到两个文件被修改
  5. 查看具体改动:git diff —— 确认改的内容没问题
  6. 添加到暂存区:git add index.html style.css
  7. 提交:git commit -m "优化首页布局和样式"
  8. 查看提交历史:git log --oneline —— 确认提交成功
记住这个流程: status → diff → add → commit → log。我每天至少走十几遍这个循环,闭着眼睛都能敲出来。

嗯,Git 的基本操作就这些。别觉得简单,真正的高手就是把基础命令用到极致。你想想看,那些复杂的 Git 工作流,底层不都是这几个命令在支撑吗?

可可精品资料库