vscode源代码管理Tab-文件右侧标志(M、A 等)的含义

Git 常用标志(M、A 等)的含义

  • 在 VSCode 的源代码管理(Source Control)标签页中,文件右侧显示的 Monaco 装饰徽章(Badge)(如 M、A 等),本质上是对 Git 文件状态标志 的可视化呈现。这些标志对应 Git 中文件的变更类型,既在 Git 命令行工具(如 git status、git diff)中使用,也在 VSCode 的 UI 中通过 Monaco Editor 的装饰系统显示。
    • 使用 man git diff-files 或 man git-status 可查看状态标志的官方说明。

    • 在 Git 源码的 diff.h 中搜索 DIFF_STATUS_ADDED,可确认标志与枚举值的映射关系。

      js 复制代码
      	/* diff-raw status letters */
      	#define DIFF_STATUS_ADDED					'A'
      	#define DIFF_STATUS_COPIED					'C'
      	#define DIFF_STATUS_DELETED					'D'
      	#define DIFF_STATUS_MODIFIED				'M'
      	#define DIFF_STATUS_RENAMED					'R'
      	#define DIFF_STATUS_TYPE_CHANGED			'T'
      	#define DIFF_STATUS_UNKNOWN					'X'
      	#define DIFF_STATUS_UNMERGED				'U'
      	
      	/* these are not diff-raw status letters proper, but used by
      	 * diffcore-filter insn to specify additional restrictions.
      	 */
      	#define DIFF_STATUS_FILTER_AON		'*'
      	#define DIFF_STATUS_FILTER_BROKEN	'B'
      	________________________________________________
      	enum diff_operation {
      	    DO_DELETE = 1,  /* D:删除 */
      	    DO_ADD,         /* A:添加 */
      	    DO_MODIFY,      /* M:修改 */
      	    DO_COPY,        /* C:复制 */
      	    DO_RENAME,      /* R:重命名 */
      	    DO_NOOP,        /* 无操作(内部使用) */
      	    DO_UNKNOWN      /* 未知操作 */
      	};

VSCode 中 Monaco 装饰徽章的实现

  • VSCode 的源代码管理模块通过读取 Git 状态(如 git status --porcelain 的输出),将文件状态映射为 Monaco Editor 的 装饰徽章,显示在文件列表右侧。具体逻辑如下:
    1. 状态标志与徽章的映射
      A(新增):通常显示为 绿色徽章,表示文件未被版本控制跟踪,或新添加到暂存区。
      M(修改):显示为 黄色徽章,表示文件内容已修改(未暂存或已暂存)。
      D(删除):显示为 红色徽章,表示文件被删除。
      R(重命名):可能显示为 蓝色徽章,并附带原文件名(如 R old.txt)。
      U(未合并):显示为 橙色徽章,表示存在合并冲突,需手动处理。
      A(DO_ADD): 本地新增的文件(服务器上没有)

      C(DO_COPY): 文件的一个新拷贝

      D(DO_DELETE): 本地删除的文件(服务器上还在)

      M(DO_MODIFY): 文件的内容或者 mode 被修改了

      R(DO_RENAME): 文件名被修改了

      T: 文件的类型被修改了

      U: 文件没有被合并(需要完成合并才能进行提交)

      X: 未知状态(很可能是遇到了 git 的 bug,可以向 git 提交 bug report)

相关推荐
yudiandian20144 小时前
03 Eclipse 配置 JDK 环境
java·ide·eclipse
彦楠5 小时前
IDEA实用快捷键
java·ide·intellij-idea
热爱生活的五柒7 小时前
vscode左边打开文件后会覆盖上一个打开的文件,有什么不覆盖的方法
ide·vscode·编辑器
精英的英7 小时前
【工具开发】适用于交叉编译环境的QT qmake项目转换vscode项目插件
人工智能·vscode·qt·开源软件
假装我不帅16 小时前
wsl+vscode开发.net项目
ide·vscode·.net
小蕾Java17 小时前
【VSCode】Visual Studio Code 2025安装包及安装教程 (附所有版本下载)
ide·vscode·编辑器
达子66618 小时前
用Vscode编译正点原子ESP32例程报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件
ide·vscode·编辑器
热爱生活的五柒19 小时前
vscode如何链接远程服务器里面的docker里面的目录
服务器·vscode·docker
OK_boom21 小时前
visual studio 打开设计时刻抛出异常“未能加载文件或程序集...”的另一解决方法
ide·visual studio
小蕾Java21 小时前
【VSCode】Visual Studio Code 2024安装包及安装教程 (附所有版本下载)
ide·vscode·编辑器