tig 的untracked changes和unstaged changes含义?

背景:你理解tig中untracked changes和unstaged changes的含义?它们对应的代码存在哪里呢?在本地仓库?提交到gitlab线上库了?下面将解答这些疑问。

一、核心结论先明确

tig 中显示的 Untracked changes(未跟踪变更)和 Unstaged changes(未暂存变更)都属于本地工作区的修改,完全没有提交到 GitLab 线上库,甚至连「本地仓库的提交(commit)」都没完成 ------ 它们和 GitLab 线上库没有任何关联,仅存在于你的本地电脑。

要理解这两个概念,需先理清 Git 的「三层本地结构」(工作区 → 暂存区 → 本地仓库),以及和「远程仓库(GitLab 线上库)」的关系:

复制代码
本地工作区(Working Directory)→ 暂存区(Staging Area)→ 本地仓库(Local Repo)→ 远程仓库(GitLab 线上库)

Untracked/Unstaged changes 都停留在「本地工作区」,连第一步「暂存区」都没进入,自然和 GitLab 无关。

二、逐词拆解含义

1. Untracked changes(未跟踪的变更)
  • 核心定义 :文件是「全新创建的」,Git 从未记录过这个文件(既不在暂存区,也不在本地仓库),Git 完全 "不知道" 这个文件的存在。比如你在项目里新建了 new_file.cpp,但没执行 git add new_file.cpp,这个文件就会被标记为 Untracked
  • tig 中的表现 :在 tig status 视图(执行 tig status 进入)中,这类文件会单独列在「Untracked files」区域,通常标红 / 高亮。
  • 和 GitLab 的关系:完全无关,GitLab 线上库根本不知道这个文件存在。
2. Unstaged changes(未暂存的变更)
  • 核心定义 :文件是 Git「已跟踪的」(比如之前提交过到本地仓库),但本次修改后没有执行 git add (即没把修改放到「暂存区」)。比如你修改了已提交过的 old_file.cpp,但没执行 git add old_file.cpp,这个文件的修改就会被标记为 Unstaged
  • tig 中的表现 :在 tig status 视图中,这类文件列在「Changes not staged for commit」区域,会显示具体的代码行变更(+/-)。
  • 和 GitLab 的关系:同样无关,仅停留在本地工作区,既没进入暂存区,也没提交到本地仓库,更没推到 GitLab。

三、关键区分:不同状态和 GitLab 的关联

状态类型 所处 Git 区域 是否提交到本地仓库 是否提交到 GitLab 线上库
Untracked changes 工作区 ❌ 否 ❌ 否
Unstaged changes 工作区 ❌ 否 ❌ 否
Staged changes(已暂存) 暂存区 ❌ 否(待提交) ❌ 否
Committed changes(已提交) 本地仓库 ✅ 是 ❌ 否(需 git push)
Pushed changes(已推送) 远程仓库 ✅ 是 ✅ 是

只有当修改经过「git add(暂存)→ git commit(本地提交)→ git push(推远程)」三步后,才会真正提交到 GitLab 线上库。

四、tig 中查看这些变更的实操

复制代码
# 1. 进入 tig 的状态视图(专门显示工作区/暂存区变更)
tig status

# 2. 视图内操作:
# - 上下箭头:选中不同的变更文件
# - Enter:查看该文件的详细行级变更(和 tig 查看提交 diff 操作一致)
# - q:退出状态视图,回到 tig 主界面
# - u:在 tig status 中,选中 untracked 文件按 u → 快速执行 git add(标记为 staged)
# - U:选中 unstaged 文件按 U → 快速执行 git add(标记为 staged)

总结

  • Untracked changes:Git 没见过的新文件,仅在本地工作区;
  • Unstaged changes:Git 认识的文件但本次修改没暂存,仅在本地工作区;
  • 两者都未提交到本地仓库,更不可能出现在 GitLab 线上库;
  • 只有完成 git add(暂存)→ git commit(本地提交)→ git push(推远程),修改才会同步到 GitLab 线上库。
相关推荐
无限进步_2 小时前
【C++】大数相加算法详解:从字符串加法到内存布局的思考
开发语言·c++·windows·git·算法·github·visual studio
IT WorryFree5 小时前
Git for Windows v2.52.0 发布说明
windows·git
烟锁池塘柳06 小时前
GitHub 强制回退版本并覆盖远程仓库
git·github
css趣多多9 小时前
git的基本使用
git
秋月的私语10 小时前
Windows系统下Git换行符问题的完整解决方案
windows·git
兰舟比特11 小时前
【Git专栏】Git中常用撤回add和commit的指令
git
无限进步_12 小时前
C语言实现贪吃蛇游戏完整教程【最终版】
c语言·开发语言·c++·git·游戏·github·visual studio
muddjsv12 小时前
Git 命令全解析:分类、常用命令与实战指南
git
莫陌尛.13 小时前
git版本提交后撤销
git
siqiangming1 天前
将SVN项目迁移到Git,保留提交记录
git·svn