【问题标题】:What does "T" mean in "git status"? (it isn't in the man page)“git status”中的“T”是什么意思? (它不在手册页中)
【发布时间】:2021-11-13 09:26:55
【问题描述】:

当我输入git status 时,我看到了:

T /path/to/file...
M /path/to/otherfile...

Tgit status 到底是什么意思?

我试过man git-status(我认为它应该在那里,但不是)。

【问题讨论】:

标签: git


【解决方案1】:

这意味着文件的类型发生了变化。例如,变成常规文件的符号链接。

据我所知,这只适用于符号链接、子模块和常规文件

编辑
要求提供此信息的来源。虽然这只是我脑海中的信息,但我能够在互联网上找到一些关于它的参考资料。最突出的是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;

【讨论】:

  • 你能提供一些你的信息来源吗?还是谢谢。
  • Git 源代码,diff.h 第 289 行附近 / wt-status.c 第 282 行附近 @sidtj。
  • @Mat 你不觉得你把 source 看得太字面意思了吗? ;-)
  • :) 它最终来源。
  • @TomvanderWoerdt,感谢您的来源。它对我有效,因为没有其他的。非常感谢。
【解决方案2】:

代码字母在--diff-filter 选项下的git-diff-filesgit-diff-index 中列出。它们包括git-status 下未列出的这些不太常见的。

改变它们的类型(即常规文件、符号链接、子模块……)(T),

来自git help diff-files msysgit 版本 1.7.8-preview20111206

【讨论】:

    【解决方案3】:

    它不在手册页中

    它会在 Git 2.34(2021 年第四季度)中出现:“git status(man) 可以显示的几种更改未记录在案。现在有。

    参见Johannes Altmanninger (krobelus)commit d2a534ccommit 56c4d7fcommit 55e7f52commit 1566cdd(2021 年 10 月 4 日)。
    (由 Junio C Hamano -- gitster -- 合并到 commit 9875c51,2021 年 10 月 13 日)

    Documentation/git-status: 记录瓷器状态 T (typechange)

    签字人:Johannes Altmanninger

    正如this issue 中所报告的,Tgit-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 d2a534ccommit 56c4d7fcommit 55e7f52commit 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:改变文件类型(普通文件、符号链接或子模块)

    【讨论】:

      【解决方案4】:

      如果你发现你的 repo 中的二进制文件发生了变化,但你不确定原因,你看到 typechange 出现 - 这可能意味着文件的模式(即 chmod)发生了变化。

      我最近弹出了这个窗口,即使在恢复到之前的提交之后,也不是很明显发生了什么变化。只有在创建分支并向其添加恢复的提交时,我才看到一条消息显示模式已更改:

      模式改变 100755 => 120000

      【讨论】:

        猜你喜欢
        • 2019-04-03
        • 1970-01-01
        • 2021-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-01
        • 1970-01-01
        相关资源
        最近更新 更多