Git 核心操作

掌握了基本的安装和配置后,我们需要深入理解 Git 的核心机制。理解这些概念,是精通版本控制的关键。

1. 工作区、暂存区、版本库

Git 与其他版本控制系统(如 SVN)最大的区别在于它引入了“暂存区”的概念。Git 的本地数据操作涉及三个重要区域:

  • 工作区: 就是你能在电脑上看到的目录。比如你的项目文件夹。在这里,你可以自由地创建、编辑或删除文件。此时的修改对于 Git 来说是“未跟踪”或“未提交”的。
  • 暂存区: 这是一个隐藏在 .git 目录下的文件(通常叫 index)。它相当于一个“提交预备区”。你可以把工作区的修改通过 git add 命令放入这里。暂存区记录了你下一次提交时将要包含哪些变更。
  • 版本库: 工作区根目录下的 .git 文件夹就是版本库。它存储了项目所有的历史版本数据。当你执行 git commit 命令时,暂存区的内容就会被永久写入版本库中,形成一个不可变的历史快照。

三者之间的数据流向图解:

工作区
    |
    |  git add 添加
    v
暂存区
    |
    |  git commit 提交
    v
版本库

2. 查看历史记录

随着项目的推进,提交记录会越来越多。Git 提供了强大的日志查看功能。

查看提交日志

输入以下命令查看详细的提交历史:

git log

这将显示每个提交的哈希值、作者、日期和提交说明。

简洁模式查看

如果历史记录过多,单屏显示不完,可以使用 --oneline 参数,每个提交只显示一行:

git log --oneline

git log --oneline

示例输出:

a1b2c3d (HEAD -> main) 修复了登录页面的Bug

查看变动差异

如果你想查看每次提交具体改了什么内容,可以使用 -p 参数:

git log -p -2  # 只显示最近两次提交的具体差异

3. 忽略文件

在项目开发中,有些文件是不应该被 Git 管理的,例如:

  • 编译生成的中间文件(如 .o, .class)。
  • 依赖包目录(如 node_modules)。
  • 包含敏感信息的配置文件(如数据库密码)。
  • 系统生成的文件(如 macOS 的 .DS_Store)。

Git 允许你创建一个名为 .gitignore 的文件来忽略这些文件。

如何操作:

  1. 在项目根目录下创建一个名为 .gitignore 的文件。
  2. 在文件中填写需要忽略的规则。

常见规则写法示例:

# 忽略所有 .log 结尾的文件
*.log

# 忽略 node_modules 目录
node_modules/

# 忽略特定文件
secret.properties

# 但保留 important.log(即使上面忽略了 .log)
!important.log