2、Git基础操作:创建仓库、添加文件、提交更新、查看状态、查看历史

好,咱们正式开始动手了。这一章是Git的“肌肉记忆”训练——说白了,就是那几个你每天都会敲无数遍的命令。我刚开始带团队的时候,发现很多新人把Git想得太玄乎,其实核心操作就那么几个:建仓库、加文件、提交、看状态、翻历史。把这五个动作练熟了,你就能应付90%的日常场景。

2.1 创建仓库:从零开始,还是从现有项目开始?

创建仓库有两种方式,我分别说说。

方式一:从零开始

你想写一个新项目,比如一个Python脚本。在空目录里执行:

mkdir my-project
cd my-project
git init

执行完 git init,Git会在当前目录下生成一个隐藏的 .git 文件夹。这个文件夹就是Git的“数据库”,里面存着所有版本信息。嗯,这里要注意:千万不要手动修改 .git 里面的内容,否则仓库可能直接坏掉。我曾经有个同事手贱删了 .git/objects 里的一个文件,结果整个历史全丢了……

方式二:从现有项目开始

如果别人已经建好了仓库,你想参与,就用 git clone

git clone https://github.com/example/project.git

这会把远程仓库完整地复制到本地。我个人习惯是先 clonecd 进去,省得自己建目录。

小提示: 执行 git init 后,可以用 ls -a 看看有没有 .git 文件夹。如果看不到,说明没成功。

2.2 添加文件:把文件交给Git“盯住”

仓库建好了,但Git并不会自动跟踪所有文件。你得明确告诉它:“这个文件我要管”。

先创建一个文件:

echo "# My Project" > README.md

然后把它加入暂存区:

git add README.md

如果你想一次添加所有文件(包括新文件和修改过的文件),可以用:

git add .

但说实话,我建议你不要无脑 git add .。为什么呢?因为有时候你会不小心把编译产物、配置文件密码什么的也加进去。我在项目中就遇到过有人把 .env 文件提交了,结果数据库密码直接暴露在Git历史里……那叫一个尴尬。

更好的做法是:先用 git status 看看哪些文件变了,再一个个 git add,或者用 git add -p 交互式地选择要添加的内容。

警告: 永远不要 git add 包含密码、密钥、Token 的文件。建议提前写好 .gitignore 文件,把这些文件排除在外。

2.3 提交更新:给版本打个“快照”

文件加到暂存区后,就可以提交了:

git commit -m "初始化项目,添加README"

-m 后面跟的是提交信息。这玩意儿很重要——你想想看,几个月后你翻历史,如果看到一堆“update”、“fix”、“commit”这种信息,你肯定想骂人。我个人的习惯是:提交信息要写清楚“为什么改”,而不是“改了啥”。

比如:

  • fix bug
  • 修复用户登录时密码校验失败的bug,原因是空指针异常

如果你忘了写 -m,Git会打开一个文本编辑器让你写信息。默认是Vim,不会用的话会很痛苦……所以还是老老实实加 -m 吧。

核心概念: 每次 git commit 都会生成一个唯一的40位哈希值(比如 a1b2c3d4...),这就是版本的“身份证”。你可以通过这个哈希值随时回到这个版本。

2.4 查看状态:随时知道自己在哪

这是我最常用的命令,没有之一:

git status

它会告诉你三件事:

  1. 当前在哪个分支(比如 main
  2. 哪些文件被修改了但还没 add(红色显示)
  3. 哪些文件已经 add 了但还没 commit(绿色显示)

我建议你每次 add 之前和 commit 之前,都跑一遍 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:   README.md

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        newfile.txt

看到 modified 表示文件被改了但没 addUntracked 表示Git完全不认识这个文件。嗯,这时候你就知道该做什么了。

2.5 查看历史:翻旧账的艺术

提交了几次之后,你想看看都干了啥:

git log

默认输出是这样的:

commit a1b2c3d4e5f6...
Author: Your Name <you@example.com>
Date:   Mon Jan 1 12:00:00 2025 +0800

    修复用户登录时密码校验失败的bug

commit f6e5d4c3b2a1...
Author: Your Name <you@example.com>
Date:   Sun Dec 31 10:00:00 2024 +0800

    初始化项目,添加README

如果你觉得信息太多,可以用 --oneline 参数,只显示一行:

git log --oneline

输出:

a1b2c3d 修复用户登录时密码校验失败的bug
f6e5d4c 初始化项目,添加README

这样清爽多了。我个人习惯是 git log --oneline --graph,还能看到分支合并的图形化结构,非常直观。

小技巧: 如果历史太多,按 q 退出。或者用 git log -5 只看最近5条。

2.6 核心流程总结

把上面几个命令串起来,就是Git最核心的工作流:

# 1. 创建或克隆仓库
git init
# 或者 git clone <url>

# 2. 修改文件(用编辑器改)

# 3. 查看状态
git status

# 4. 添加文件到暂存区
git add <file>

# 5. 提交
git commit -m "写清楚改了啥"

# 6. 查看历史
git log --oneline

这个循环你每天会重复几十次。说白了,Git就是帮你管理这些“快照”的工具。你只需要记住:修改 → add → commit,三步走。

下面这张图展示了整个流程:

Git 基础操作流程 工作区 你编辑文件的地方 (比如 VS Code) 暂存区 准备提交的“候车室” (git add 后到达) 本地仓库 版本历史存储地 (git commit 后到达) git add git commit 常用命令速查 • git status — 查看当前状态(随时可查) • git log --oneline — 查看提交历史 • git diff — 查看具体修改了哪些内容

看到没?整个流程就是文件从左往右流动。你每次 git add 就是把文件从工作区搬到暂存区,每次 git commit 就是把暂存区的内容打包成一个版本存到仓库里。

一句话记住: 工作区是你写代码的地方,暂存区是你挑拣代码的地方,仓库是你存代码的地方。三个区域,两条命令(add + commit),搞定。

好了,这一章的内容就这些。把上面的命令敲几遍,形成肌肉记忆。下一章我们会聊分支操作——那才是Git真正强大的地方。


公众号:蓝海资料掘金营,微信deep3321