目 录CONTENT

文章目录
Git

Git 命令(一)

~梓
2026-01-27 / 0 评论 / 0 点赞 / 12 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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 命令后,会发生两件关键事情:

  1. 创建一个隐藏的 .git 目录:这是 Git 仓库的“数据库”和“控制中心”。你所有的提交历史、分支信息、配置等都存储在这里。
  2. 初始化 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
0

评论区