Git 命令(一)
1.查看git版本
git --version
2.配置用户名和邮箱
建议使用对应github邮箱
git config --global user.name "你的名字"
git config --global user.email "you@example.com"
# 查看全局配置
git config --global --list
3.创建一个全新的 Git 仓库
git init
git init 究竟做了什么?
在你项目的根目录下运行 git init 命令后,会发生两件关键事情:
- 创建一个隐藏的
.git目录:这是 Git 仓库的“数据库”和“控制中心”。你所有的提交历史、分支信息、配置等都存储在这里。 - 初始化 Git 所需的数据结构:在
.git目录中创建一系列子目录和文件,为后续的版本控制做好准备。
4. git add - 添加文件到暂存区
基本用法
# 添加单个文件
git add filename.txt
# 添加所有修改的文件(不包括新增的未跟踪文件)
git add -u
# 添加所有文件(包括新增文件)
git add .
# 添加整个目录
git add src/
# 交互式添加(推荐,可以逐行选择)
git add -p
作用说明
- 将工作区的修改保存到暂存区(
.git/index) - 文件内容被压缩并存储在
.git/objects/中(生成 blob 对象) - 暂存区记录了文件的哈希值和路径映射
常用场景
# 场景1:添加特定类型的文件
git add *.py # 所有Python文件
git add *.js *.css # JS和CSS文件
# 场景2:添加修改但排除某些文件
git add . # 先添加所有
git reset config.ini # 再排除特定文件
# 场景3:查看将要添加的内容
git add -n . # 干跑模式,不实际添加
5. git commit - 提交更改到本地仓库
基本用法
# 提交暂存区的所有更改
git commit -m "提交说明"
# 自动添加所有已跟踪文件的修改并提交(跳过git add)
git commit -a -m "提交说明"
# 修改最后一次提交(还没push时)
git commit --amend -m "新的提交信息"
# 详细提交(打开编辑器写多行说明)
git commit -v
作用说明
- 将暂存区的内容创建为永久记录
- 生成 commit 对象(包含作者、时间、提交信息)
- 更新当前分支指针到新的提交
- 清空暂存区(但工作区文件不变)
提交信息规范
# 推荐格式:
git commit -m "feat: 添加用户登录功能"
git commit -m "fix: 修复支付接口bug"
git commit -m "docs: 更新API文档"
# 类型前缀说明:
# feat: 新功能
# fix: 修复bug
# docs: 文档更新
# style: 代码格式
# refactor: 重构
# test: 测试相关
# chore: 构建/工具更新
常用场景
# 场景1:忘记添加文件到上次提交
git add missed-file.txt
git commit --amend --no-edit # 不修改提交信息
# 场景2:修改提交信息
git commit --amend -m "新的提交信息"
# 场景3:提交时查看差异
git commit -v # 会在编辑器中显示本次提交的差异
6. git rm - 删除文件
基本用法
# 删除文件(从工作区和Git中都删除)
git rm filename.txt
# 强制删除(即使文件有未提交的修改)
git rm -f filename.txt
# 删除目录
git rm -r dirname/
# 只从Git删除,保留本地文件
git rm --cached filename.txt
作用说明
- 从工作区和暂存区同时删除文件
- 会在下次提交时记录"文件删除"操作
- 删除的文件历史记录仍在
.git/objects/中
常用场景
# 场景1:彻底删除不需要的文件
git rm temp.log # 删除日志文件
git rm -r node_modules/ # 删除整个目录
# 场景2:删除后立即提交
git rm old-file.txt && git commit -m "删除旧文件"
# 场景3:误删恢复
git rm wrong-file.txt # 误删
git reset HEAD wrong-file.txt # 从暂存区恢复
git checkout wrong-file.txt # 恢复文件内容
7. git rm --cached - 从Git删除但保留本地文件
基本用法
# 从Git停止跟踪,但保留本地文件
git rm --cached config.ini
# 停止跟踪目录
git rm -r --cached logs/
# 常用组合:移除敏感文件
git rm --cached .env
echo ".env" >> .gitignore
git add .gitignore
git commit -m "移除环境变量文件"
作用说明
- 仅从 Git 跟踪列表中移除文件(删除
.git/index中的记录) - 不删除本地文件
- 用于移除不小心提交的配置文件、敏感信息
.gitignore对其无效,必须显式使用此命令
与 git rm 的区别
# git rm → 本地和Git都删除
# git rm --cached → 只从Git删除,本地保留
# 对比:
echo "test" > file.txt
git add file.txt
git commit -m "测试"
# 方法A:完全删除
git rm file.txt # 本地文件没了!
# 方法B:只停止跟踪
git rm --cached file.txt # 本地文件还在!
常用场景
# 场景1:移除已提交的配置文件
git rm --cached config.yaml
# 本地 config.yaml 还在,可以继续使用
# 场景2:将文件夹加入.gitignore但已提交过
git rm -r --cached .idea/
echo ".idea/" >> .gitignore
git add .gitignore
git commit -m "忽略IDE配置"
# 场景3:清理误提交的大文件
git rm --cached big-video.mp4
echo "*.mp4" >> .gitignore
git add .gitignore
git commit -m "移除大文件"
8. git diff - 查看差异
基本用法
# 查看工作区与暂存区的差异
git diff
# 查看暂存区与最新提交的差异
git diff --staged
git diff --cached # 同上
# 查看工作区与某个提交的差异
git diff HEAD # 与最新提交比较
git diff abc123 # 与指定提交比较
# 查看两个提交之间的差异
git diff commit1 commit2
# 查看两个分支的差异
git diff main develop
作用说明
- 显示文件内容的具体变化
+表示新增行,-表示删除行- 彩色输出(绿色新增,红色删除)
输出格式说明
diff --git a/file.txt b/file.txt
index abc123..def456 100644
--- a/file.txt # 修改前
+++ b/file.txt # 修改后
@@ -1,3 +1,4 @@ # 第1-3行 → 第1-4行
Hello World
-This is old text
+This is new text
+Added new line
End of file
常用场景
# 场景1:提交前检查修改
git diff # 看看改了哪些地方
git diff --staged # 看看将要提交什么
# 场景2:比较特定文件
git diff HEAD -- main.py # 只看main.py的变化
git diff -- src/ # 只看src目录的变化
# 场景3:统计差异
git diff --stat # 显示修改统计
# 输出:main.py | 5 +++--
# README | 2 ++
# 场景4:查看单词级差异(而不是整行)
git diff --word-diff
# 场景5:查看最近一次提交的改动
git diff HEAD~1 HEAD # 上次提交到现在的变化
高级用法
# 忽略空白字符变化
git diff -w
# 只显示修改的文件名
git diff --name-only
# 查看新增了哪些行
git diff --diff-filter=A
# 查看分支差异(简洁)
git diff main..feature --stat
# 图形化查看差异
git difftool
| 命令 | 作用 | 常用参数 |
|---|---|---|
git add |
添加文件到暂存区 | ., -u, -p |
git commit |
提交更改 | -m, -a, --amend |
git rm |
删除文件 | -r, -f, --cached |
git diff |
查看差异 | --staged, HEAD, --stat |
评论区