【发布时间】:2021-11-13 09:26:55
【问题描述】:
当我输入git status 时,我看到了:
T /path/to/file...
M /path/to/otherfile...
Tgit status 到底是什么意思?
我试过man git-status(我认为它应该在那里,但不是)。
【问题讨论】:
标签: git
当我输入git status 时,我看到了:
T /path/to/file...
M /path/to/otherfile...
Tgit status 到底是什么意思?
我试过man git-status(我认为它应该在那里,但不是)。
【问题讨论】:
标签: git
这意味着文件的类型发生了变化。例如,变成常规文件的符号链接。
据我所知,这只适用于符号链接、子模块和常规文件
编辑
要求提供此信息的来源。虽然这只是我脑海中的信息,但我能够在互联网上找到一些关于它的参考资料。最突出的是a git changelog 提到“T”作为类型更改和“D”作为删除。
编辑 2 (更新此内容,因为这是我迄今为止评分最高的答案)
正如@PhilipOakley 所指出的,man git-diff-files 实际上确实显示了这些信息。
可能的状态字母有:
- A:添加文件
- C:将文件复制到新文件中
- D:删除文件
- M:修改文件的内容或模式
- R:重命名文件
- T:改变文件类型
- U:文件未合并(必须完成合并才能提交)
- X:“未知”更改类型(很可能是一个错误,请报告)
正如@Mat 所指出的,它也在diff.h,第289 行:
#define DIFF_STATUS_TYPE_CHANGED 'T'
在wt-status.c,第 282 行:
case DIFF_STATUS_TYPE_CHANGED:
status_printf_more(s, c, _("typechange: %s"), one);
break;
【讨论】:
diff.h 第 289 行附近 / wt-status.c 第 282 行附近 @sidtj。
代码字母在--diff-filter 选项下的git-diff-files 和git-diff-index 中列出。它们包括git-status 下未列出的这些不太常见的。
改变它们的类型(即常规文件、符号链接、子模块……)(T),
来自git help diff-files msysgit 版本 1.7.8-preview20111206
【讨论】:
它不在手册页中
它会在 Git 2.34(2021 年第四季度)中出现:“git status”(man) 可以显示的几种更改未记录在案。现在有。
参见Johannes Altmanninger (krobelus)commit d2a534c、commit 56c4d7f、commit 55e7f52、commit 1566cdd(2021 年 10 月 4 日)。
(由 Junio C Hamano -- gitster -- 合并到 commit 9875c51,2021 年 10 月 13 日)
Documentation/git-status: 记录瓷器状态 T (typechange)签字人:Johannes Altmanninger
正如this issue 中所报告的,
T在git-status中的瓷器状态字母描述中缺失(而T记录在 git-diff-files和朋友中)。
文档T紧跟在M之后(已修改),因为两者非常相似。
git status 现在包含在其man page 中:
- 'T' = 文件类型已更改(常规文件、符号链接或子模块)
git status 现在包含在其man page 中:
M [ MTD] updated in index T [ MTD] type changed in index A [ MTD] added to index
git status 现在包含在其man page:
R [ MTD] renamed in index C [ MTD] copied in index [MTARC] index and work tree matches [ MTARC] M work tree changed since index [ MTARC] T type changed in work tree since index [ MTARC] D deleted in work tree
描述源于git diff-format,已更新:
参见Johannes Altmanninger (krobelus)commit d2a534c、commit 56c4d7f、commit 55e7f52、commit 1566cdd(2021 年 10 月 4 日)。
(由 Junio C Hamano -- gitster -- 合并到 commit 9875c51,2021 年 10 月 13 日)
Documentation/diff-format:在这种情况下瓷器状态为T签字人:Johannes Altmanninger
Porcelain status letter
T被记录为“文件类型”,这在技术上是正确的,但对于从系统编程中不太熟悉该术语的用户来说,信息不足。特别是,考虑到唯一受支持的文件类型是“常规文件”、“符号链接”和“子模块”,“文件类型”一词对于许多不知道符号链接的用户来说肯定是不透明的(?)可以跟踪链接 - 我认为“
chmod +x”可能会导致T状态(错误,它是M)。明确记录这三种文件类型,以便用户知道他们是否/如何处理。
diff-format 现在包含在其man page 中:
T:改变文件类型(普通文件、符号链接或子模块)
【讨论】:
如果你发现你的 repo 中的二进制文件发生了变化,但你不确定原因,你看到 typechange 出现 - 这可能意味着文件的模式(即 chmod)发生了变化。
我最近弹出了这个窗口,即使在恢复到之前的提交之后,也不是很明显发生了什么变化。只有在创建分支并向其添加恢复的提交时,我才看到一条消息显示模式已更改:
模式改变 100755 => 120000
【讨论】: