【Git】第二节:初始化与基本工作流(git init、git add、git commit)

💻第2节:初始化与基本工作流(git init、git add、git commit)


💡引言:Git 的起点 —— 初始化你的第一个仓库

在学习 Git 的过程中,初始化仓库提交更改 是最基本也是最重要的操作。每一个 Git 项目都始于一个仓库,而每一次代码变更都需要通过“添加”和“提交”来记录。

本节课曹老师将带你从零开始创建一个 Git 仓库,并完成一次完整的提交流程:从初始化到添加文件,再到提交更改。我们将深入理解 git initgit addgit commit 这三个核心命令的作用机制,详细讲解git忽视文件.gitignore的作用,并通过实际案例演示如何使用它们管理代码版本。


⭐一、初始化 Git 仓库:git init

1. 命令说明

git init

该命令用于在当前目录下创建一个新的 Git 仓库。执行后会生成一个隐藏的 .git 文件夹,它包含了所有 Git 的元数据和历史记录。

2. 使用场景

  • 将已有项目纳入版本控制
  • 创建新项目并准备使用 Git 管理其生命周期

3. 操作示例

mkdir my-project
cd my-project
git init

此时你已经拥有一个空的 Git 仓库,但还没有任何提交记录。

📌 注意:.git 文件夹非常重要,不要手动修改或删除它,否则可能导致仓库损坏。


🚀二、添加文件到暂存区:git add

1. 命令说明

git add <file>

该命令将指定文件的当前状态加入到 暂存区(Staging Area),表示这些更改将在下一次提交中被记录。

2. 多种用法详解

命令作用
git add .添加当前目录及子目录下的所有文件
git add README.md只添加指定文件
git add *.js添加所有 .js 文件
git add -p交互式添加,逐块选择要提交的内容

3. 工作原理图解

[工作区] -- git add --> [暂存区]

只有被添加到暂存区的改动才会被提交。


🚌三、提交更改:git commit

1. 命令说明

git commit -m "提交信息"

该命令将暂存区中的内容正式保存为一个版本快照,并附带一条描述性的提交信息。

2. 提交信息规范建议(推荐遵循 Conventional Commits 规范)

格式:

<type>(<scope>): <subject>

// 示例:
feat(auth): add password strength meter

常见 type 类型:

  • feat:新增功能
  • fix:修复 bug
  • docs:文档更新
  • style:代码风格调整(不影响逻辑)
  • refactor:重构代码
  • test:增加测试
  • chore:构建/配置/依赖等辅助任务

3. 提交的本质

每次提交都会生成一个唯一的 SHA-1 哈希值作为标识,例如:

commit a1b2c3d4e5f67890abcdef1234567890abcd
Author: John Doe <john@example.com>
Date:   Mon Apr 1 12:00:00 2025 +0800

    feat(auth): add password strength meter

提交记录是 Git 版本回溯、协作和审计的基础。


🚁四、完整流程演示:从初始化到提交

步骤 1:创建项目目录并初始化

mkdir hello-git
cd hello-git
git init

步骤 2:创建一个文件并写入内容

echo "# Hello Git" > README.md

步骤 3:查看当前状态

git status

输出类似如下内容:

On branch master

No commits yet

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

nothing added to commit but untracked files present (use "git add" to track)

步骤 4:添加文件到暂存区

git add README.md

再次运行 git status 查看状态:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md

步骤 5:提交更改

git commit -m "feat(readme): initial commit with README.md"

输出结果:

[master (root-commit) abcdef1] feat(readme): initial commit with README.md
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

此时你已经成功完成了第一次 Git 提交!


⛵五、常用组合命令与技巧

命令描述
git add . && git commit -m "message"一次性添加所有文件并提交
git commit -a -m "message"自动添加已跟踪文件的修改并提交(不包括新增文件)
git commit --amend修改最近一次提交的信息或内容(慎用)
git log查看提交历史
git diff查看工作区与暂存区之间的差异
git status查看当前仓库状态(推荐频繁使用)

⚡六、最佳实践与注意事项

✅ 最佳实践

  • 每次提交只做一件事(原子性提交)
  • 编写清晰、规范的提交信息
  • 提交前使用 git statusgit diff 审核改动
  • 避免一次性提交太多内容,难以追溯问题来源

⚠️ 注意事项

  • 不要随意使用 git add .,可能误加敏感文件(如 .env
  • 修改提交时使用 --amend 要小心,会影响历史记录
  • 在团队协作环境中避免强制推送(force push),以免覆盖他人提交

📕七、 .gitignore 文件讲解

.gitignore 是 Git 版本控制系统中的一个重要配置文件,用于指定哪些文件或目录应该被 Git 忽略,不纳入版本控制。这对于避免将不必要的文件(如编译生成的临时文件、环境配置文件、敏感信息等)提交到代码仓库中非常有用。

1. .gitignore 的作用
  • 避免提交无关文件:防止将编译生成的文件、日志文件、临时文件等提交到仓库。
  • 保护敏感信息:避免提交包含密码、API 密钥等敏感信息的文件。
  • 提高仓库整洁性:减少仓库中的冗余文件,使代码结构更清晰。
2. .gitignore 的语法规则

.gitignore 文件使用简单的模式匹配规则来指定需要忽略的文件或目录。以下是常见的语法规则:

规则说明示例
filename忽略指定名称的文件error.log
*.ext忽略所有指定扩展名的文件*.tmp
dir/忽略指定目录(包括子目录)build/
!pattern取消忽略(例外规则)!important.txt
/pattern仅忽略根目录下的文件或目录/config.local.js
**匹配任意层级目录**/temp/

3. 示例 .gitignore 文件

以下是一个常见的 .gitignore 文件示例,适用于一个典型的 Web 项目:

# 忽略 Node.js 项目的依赖文件
node_modules/

# 忽略编译生成的临时文件
dist/
build/
*.tmp

# 忽略日志文件
*.log

# 忽略环境配置文件(避免提交敏感信息)
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# 忽略 IDE 或编辑器生成的配置文件
.idea/
.vscode/
*.swp

# 忽略 macOS 系统文件
.DS_Store

# 忽略 Windows 系统文件
Thumbs.db

# 取消忽略根目录下的 README.md(如果其他规则可能覆盖它)
!/README.md

4. .gitignore 的使用注意事项
  1. 文件位置

    • .gitignore 文件应放在项目的根目录下。
    • 也可以为子目录创建单独的 .gitignore 文件,仅作用于该目录及其子目录。
  2. 生效时机

    • .gitignore 仅对未被 Git 跟踪的文件生效。
    • 如果文件已被 Git 跟踪(即已提交到仓库),需要先从 Git 中移除(使用 git rm --cached <file>),然后 .gitignore 才会生效。
  3. 全局忽略

    • 如果希望某些忽略规则对所有 Git 项目生效,可以配置全局 .gitignore 文件:
      git config --global core.excludesfile ~/.gitignore_global
      
    • 然后在 ~/.gitignore_global 文件中定义全局忽略规则。
  4. 共享与维护

    • .gitignore 文件应随项目一起提交到仓库,以便所有开发者使用相同的忽略规则。
    • 随着项目的发展,可能需要更新 .gitignore 文件以适应新的需求。

5. 常见项目的 .gitignore 模板
  • GitHub 提供了许多常见项目的 .gitignore 模板,可以直接使用或参考:
  • 例如,Node.js 项目的模板可以直接通过以下命令生成:
    curl https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore > .gitignore
    

6. 调试 .gitignore

如果发现某些文件未被忽略,可以使用以下命令检查 Git 的忽略规则:

git check-ignore -v <file>

这会显示哪个 .gitignore 规则导致文件被忽略(或未被忽略)。


.gitignore 是 Git 中一个简单但强大的工具,用于管理哪些文件应该被忽略。通过合理配置
.gitignore,可以避免提交无关文件,保护敏感信息,并保持代码仓库的整洁。对于任何使用 Git 的项目,.gitignore
都是必不可少的配置文件。

📚八、总结

本节课我们系统讲解了 Git 的基本工作流,包括:

✅ 如何使用 git init 初始化一个新的 Git 仓库
✅ 使用 git add 将文件添加到暂存区
✅ 通过 git commit 提交更改并记录版本历史
✅ 推荐了良好的提交规范与实用命令组合
✅ 演示了一个完整的提交流程
✅ 详细讲解了git忽视文件.gitignore的作用

通过本次课程的学习,你已经掌握了 Git 的基础操作流程,能够独立创建项目并进行版本管理。


附录:推荐资源

  • 📘 Git 官方文档:https://git-scm.com/book/zh/v2
  • 🧰 Git 常用命令速查表:https://education.github.com/git-cheat-sheet-education.pdf
  • 📊 Git 图形化工具推荐:VSCode 内置 Git 支持、Sourcetree、GitKraken

🎯 下一步建议:尝试在本地创建多个文件,练习部分提交、多次提交、查看提交日志等操作,加深对 Git 工作流的理解。

下一讲我们将进入《第3节:查看状态与历史记录》,学习如何使用 git statusgit loggit diff 来审查项目的当前状态和历史变更。敬请期待!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈前端老曹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值