gpt4 book ai didi

git - git status 和 git diff --name-only 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 13:20:44 27 4
gpt4 key购买 nike

这两个命令似乎具有使它们显示相同信息的选项。

最佳答案

除了仅显示文件名的 --name-flag 之外,git diff 命令(不带其他参数)将显示您的 索引之间的差异 和您的工作目录(如 in the diagaram here 所述)。

git status 命令将显示您的工作树的整个当前状态(暂存、修改、删除、未跟踪等的文件)

但是,通过考虑缩短 status 命令输出(通常只显示名称)的 -s 标志,我们可以在某些情况下使用这两个命令会给你“几乎”完全相同的输出。这完全取决于你已经在你的工作目录中做了什么。

例如,如果您执行 git status -s,您将根据您的 HEAD 和您的 index 获取工作目录中的所有差异> 包括未跟踪的文件..(但假设您没有未跟踪的文件..)

另一方面,无论您是否已经暂存了什么,如果您执行 git diff --name-only HEAD(参见上图),都有可能你得到几乎相同的输出。

此外,结果几乎相同(不是完全相同),因为git status -s 显示了非常有用的附加信息:

  • 行首的字母总结状态(M 表示已修改,D 表示已删除,A 表示已添加,? 表示未跟踪的文件)
  • 显示已上演内容的颜色代码(绿色表示已上演,红色表示未上演)。

因此,我们可以认为diff更适合查看实际文件内容的差异。这就是为什么不通过 diff 显示未跟踪文件是有道理的。比较差异只从我们拥有的东西(跟踪文件)开始。

总而言之,如果你想要一些关于你实际更改的简洁输出(毕竟这是使用 --name-only 的理由)你真的应该考虑 git status -s

关于git - git status 和 git diff --name-only 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35069871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com