Appearance
第3章:Git 本地仓库基础
3.1 本地仓库创建
方式1:git init 初始化新仓库
操作步骤:
- 打开命令行工具,进入要创建仓库的目录
- 运行
git init命令 - 仓库创建成功后,会在当前目录生成
.git目录
示例:
bash
# 创建并进入项目目录
mkdir my-project
cd my-project
# 初始化 Git 仓库
git init
# 输出
Initialized empty Git repository in /path/to/my-project/.git/方式2:git clone 克隆远程仓库
操作步骤:
- 打开命令行工具
- 运行
git clone <远程仓库地址>命令 - 仓库克隆成功后,会在当前目录生成一个与仓库同名的目录
示例:
bash
# 克隆远程仓库
git clone https://github.com/username/repository.git
# 输出
Cloning into 'repository'...
remote: Enumerating objects: 100, done.
remote: Counting objects: 100% (100/100), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 100 (delta 20), reused 100 (delta 20), pack-reused 0
Receiving objects: 100% (100/100), 1.00 MiB | 1.00 MiB/s, done.
Resolving deltas: 100% (20/20), done.3.2 工作区、暂存区、版本库
Git 中有三个重要的概念:工作区、暂存区和版本库。
工作区(Working Directory)
- 就是你在电脑上看到的目录
- 包含项目的所有文件
- 可以直接修改文件内容
暂存区(Staging Area)
- 位于
.git目录中的索引文件 - 临时保存你的改动
- 可以添加多个文件,一次性提交
版本库(Repository)
- 位于
.git目录 - 包含所有的版本信息
- 是 Git 管理的核心
三者关系
- 在工作区修改文件
- 使用
git add将修改添加到暂存区 - 使用
git commit将暂存区的内容提交到版本库
3.3 核心基础命令
git add:将文件添加到暂存区
功能:将工作区的修改添加到暂存区
用法:
bash
# 添加单个文件
git add <文件名>
# 添加多个文件
git add <文件1> <文件2> <文件3>
# 添加当前目录所有文件
git add .
# 添加指定目录所有文件
git add <目录名>/示例:
bash
# 添加单个文件
git add index.html
# 添加所有文件
git add .git commit:将暂存区文件提交到版本库
功能:将暂存区的内容提交到版本库
用法:
bash
# 提交并添加提交信息
git commit -m "提交信息"
# 提交所有已跟踪文件的修改
git commit -a -m "提交信息"
# 修改上次提交的信息
git commit --amend -m "新的提交信息"提交信息规范:
- 简洁明了,不超过50个字符
- 使用现在时态,如 "Add feature" 而不是 "Added feature"
- 首字母大写
- 结尾不要加句号
- 详细信息可以在第二行开始添加
示例:
bash
# 提交并添加提交信息
git commit -m "Add login functionality"
# 提交所有已跟踪文件的修改
git commit -a -m "Update user profile page"git status:查看当前仓库状态
功能:查看工作区和暂存区的状态
用法:
bash
git status输出说明:
Untracked files:未跟踪的文件,需要使用git add添加Changes not staged for commit:已修改但未添加到暂存区的文件Changes to be committed:已添加到暂存区的文件
示例:
bash
git status
# 输出
On branch master
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)
style.css
no changes added to commit (use "git add" and/or "git commit -a")git log:查看提交记录
功能:查看版本库的提交历史
用法:
bash
# 查看所有提交记录
git log
# 查看最近 n 条提交记录
git log -n <数量>
# 以简洁模式查看提交记录
git log --oneline
# 查看提交记录和文件变更
git log -p示例:
bash
# 查看所有提交记录
git log
# 以简洁模式查看最近5条提交记录
git log --oneline -53.4 版本回溯
git reset:回退版本
功能:将当前分支回退到指定版本
用法:
bash
# 回退到上一个版本
git reset --hard HEAD~
# 回退到指定版本
git reset --hard <提交哈希值>
# 回退到指定版本,但保留工作区修改
git reset --mixed <提交哈希值>
# 回退到指定版本,但保留工作区和暂存区修改
git reset --soft <提交哈希值>参数说明:
--hard:重置工作区、暂存区和版本库--mixed:重置暂存区和版本库,保留工作区(默认)--soft:只重置版本库,保留工作区和暂存区
示例:
bash
# 回退到上一个版本
git reset --hard HEAD~
# 回退到指定版本
git reset --hard a1b2c3d注意事项
git reset --hard会丢弃所有未提交的修改,使用时要谨慎- 回退后,如果需要回到原来的版本,需要知道原来版本的哈希值
3.5 忽略文件
.gitignore 文件
功能:指定 Git 应该忽略的文件和目录
创建方法:
- 在项目根目录创建
.gitignore文件 - 在文件中添加需要忽略的文件和目录
常用忽略规则:
# 忽略 node_modules 目录
node_modules/
# 忽略构建产物
build/
dist/
# 忽略日志文件
logs/
*.log
# 忽略环境变量文件
.env
.env.local
# 忽略编辑器配置文件
.vscode/
.idea/
*.swp
*.swo
# 忽略操作系统文件
.DS_Store
Thumbs.db示例:
bash
# 创建 .gitignore 文件
touch .gitignore
# 编辑 .gitignore 文件
echo "node_modules/" >> .gitignore
echo "build/" >> .gitignore
echo ".env" >> .gitignore3.6 本地仓库实操案例
新建文件、修改、提交、回溯
操作步骤:
创建本地仓库
bashmkdir git-demo cd git-demo git init创建第一个文件
bashecho "Hello Git!" > README.md git add README.md git commit -m "Initial commit"修改文件
bashecho "This is a Git demo." >> README.md git add README.md git commit -m "Update README"创建新文件
bashecho "console.log('Hello World!');" > app.js git add app.js git commit -m "Add app.js"查看提交记录
bashgit log --oneline版本回溯
bash# 回退到上一个版本 git reset --hard HEAD~ # 查看文件内容 cat README.md # 查看是否还有 app.js 文件 ls回到最新版本
bash# 查看所有提交记录(包括被回退的) git reflog # 回到最新版本 git reset --hard <最新版本的哈希值>
通过本章的学习,你已经掌握了 Git 本地仓库的基本操作。接下来,我们将学习 Git 的核心命令进阶。
