在 Posh-Git 中更改“git status”输出颜色

Posted

技术标签:

【中文标题】在 Posh-Git 中更改“git status”输出颜色【英文标题】:Changing "git status" output colors in Posh-Git 【发布时间】:2013-08-27 12:38:37 【问题描述】:

在Posh-Git 中,当我在存储库中运行“git status”时,更改和未跟踪文件的颜色是深红色,当我尝试将它们配置为“正常”红色时。我想这样做是因为我有一个黑色背景的控制台,所以深红色很难阅读。

我四处搜索,似乎需要进行两项配置更改:

    在 $GitPromptSettings 中将“WorkingForegroundColor”和“UntrackedForegroundColor”从“DarkRed”更改为“Red”。

    在 git config 中将“color.status.changed”和“color.status.untracked”更改为红色。

根据我的阅读,这就是我需要做的所有事情,但“git status”的结果仍然是深红色。

这是一个摘要,以证明我按照我的要求设置它们,也许有人可以发现错误:

【问题讨论】:

问题是这个主题,这个颜色是怎么做的? 【参考方案1】:

git status 的输出由您的 .gitconfig 文件控制。 changeduntracked 文件的默认值是暗淡的 Red,但您可能需要 Red Bold,它是提示中的亮(默认)红色。

将以下内容添加到您的 .gitconfig 文件中:

[color]
    ui = true
[color "status"]
    changed = red bold
    untracked = red bold
    added = green bold

对于将来引用此内容的任何其他人,可接受的颜色为 normalblackredgreenyellowbluemagentacyan 和 @ 987654336@ 以及单个可选修饰符 bolddimulblinkreverse。如果给定两种颜色,第一种是前景,第二种是背景。

【讨论】:

谢谢你——我的人生已经圆满了!给任何可能遇到问题的人的说明,直到我安装了更新版本的 posh-git。 这适用于 Windows 上的任何版本的 git,而不仅仅是豪华 git。 这甚至适用于 powershell。 +1 提高我的工作效率。 使用git config <color-to-update> “foreground-color background-color attribute” 模式,如git config --global color.status.changed "cyan normal bold" 什么是ui=true?检查here,部分颜色。【参考方案2】:

这里只有一种方法可以将 DarkRed 更改为 Red:修改控制台窗口本身的配色方案。据我所知,git 会在列表中选择“第一个”红色(恰好是黑暗的......)。因此,只需为其增加 R 值即可。

您可以直接在窗口(属性 -> 颜色)或注册表中执行此操作。提示是不同的故事:它使用 PS 颜色名称,其中 Red = Red,而不是 DarkRed...

【讨论】:

这很棒。我不知道属性中的颜色集是一个调色板,一切都可以从中汲取。 我不会撒谎,我对从属性窗口更改红色非常怀疑......但是,完全准确。很好的答案=) 效果很好!如果您使用的是标准控制台(不是 ISE),也适用于 Powershell。它适用于 git status 和 posh-git。我只是去了属性-> 颜色,单击深红色并将其红色值更改为 255。现在效果很好。非常感谢! 帮助很大。我对红色状态信息感到非常恼火。一直试图改变它,但没有奏效。简单地将红色值设为 15 对我来说非常有用。 运行 powershell。最有帮助。谢谢。【参考方案3】:

要将列出的未跟踪和修改文件的颜色更改为更易读的黄色,您可以将其添加到您的 ~/.gitconfig 文件中:

[color "status"]
    untracked = bold yellow
    changed = bold yellow

同时更新 GitPrompt.ps1 以将未跟踪显示为黄色可能是个好主意:

    UntrackedForegroundColor  = [ConsoleColor]::Yellow
    WorkingForegroundColor    = [ConsoleColor]::Yellow

编辑:GitPrompt.ps1 位于 PowerShell posh-git 文件夹中。

【讨论】:

这是一个很好的答案,其复杂性和第 3 方的东西要少得多。绝对是+1。但是,我想在那里再看到两件事。第一个是对可以在颜色术语中设置的其他属性的引用和完整列表(如果有的话)。第二个是如何设置任意颜色的建议(最好是十六进制值,但可用颜色数字列表也很棒)。第二个当然是 if 是可能的(根据我的经验,这是一个相当大的“if”。)【参考方案4】:

除了@WarrenB 的回答。要更改状态的颜色 git diff(新行和删除行)的颜色,您必须在 .git/config 文件中包含以下内容:

[color]
ui = true
[color "status"]
changed = red bold
untracked = red bold
added = green bold
[color "diff"]
old = red bold
new = green bold

“差异”选项使您可以使用明亮(粗体)的红色和绿色。参考:https://git-scm.com/docs/git-config#git-config-colordiff

【讨论】:

【参考方案5】:

您可以通过修改 PowerShell posh-git 模块文件夹中的 GitPrompt.ps1 文件的源来更改这些。我遇到了同样的问题,只是删除了此文件中第 30 行周围定义的颜色中的“深色”:

BeforeIndexForegroundColor= [ConsoleColor]::**Green**
BeforeIndexBackgroundColor= $Host.UI.RawUI.BackgroundColor

IndexForegroundColor      = [ConsoleColor]::**Green**
IndexBackgroundColor      = $Host.UI.RawUI.BackgroundColor

WorkingForegroundColor    = [ConsoleColor]::**Red**
WorkingBackgroundColor    = $Host.UI.RawUI.BackgroundColor

UntrackedText             = ' !'
UntrackedForegroundColor  = [ConsoleColor]::**Red**

Powershell colors 这个列表也很有用。

【讨论】:

这用于更改显示缩写状态的命令提示符上的颜色(例如:[master +1 ~0 -0 | +2 ~0 ~0])。但它并没有改变“git status”命令输出的颜色。 BartekB 的建议也没有改变。 在这两个地方都为我工作,但只有在获得最新版本的 posh-git 使用 powershell 和来自 git Bash 的标准 git 对我来说效果很好(无论如何,Posh 是什么,哈哈)

以上是关于在 Posh-Git 中更改“git status”输出颜色的主要内容,如果未能解决你的问题,请参考以下文章

Git status - 有没有办法只在特定目录中显示更改?

git status 未显示权限更改 [重复]

让 git status 显示未修改/未更改的跟踪文件?

git stash `没有本地更改`,但 git status `提前 3 次提交`

如何在终端中退出“git status”列表?

如何归档 git status 输出?