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

82
Posh-Git中,当我在仓库中运行“git status”时,更改和未跟踪文件的颜色为深红色,而我尝试将它们配置为“普通”红色。我想这样做是因为我的控制台背景是暗色的,所以深红色很难阅读。
我搜索了一下,似乎有两个配置更改需要进行:
1. 在$GitPromptSettings中将“WorkingForegroundColor”和“UntrackedForegroundColor”从“DarkRed”更改为“Red”。 2. 在git config中将“color.status.changed”和“color.status.untracked”更改为红色。
根据我的阅读,这就是我需要做的全部,但是“git status”的结果仍然是深红色。
以下是一个摘要,证明我已经按照自己的说法设置了它们,也许有人能够发现错误:

screenshot


这个问题是如何选择这种主题和这些颜色的呢? - ridermansb
5个回答

141
git status 命令的输出由你的 .gitconfig 文件控制。对于 changeduntracked 文件,默认颜色是暗淡的 Red,但你可能想要的是 Red Bold,这是你在提示符中看到的亮(默认)红色。
将以下内容添加到你的 .gitconfig 文件中:
[color]
    ui = true
[color "status"]
    changed = red bold
    untracked = red bold
    added = green bold

如果未来有其他人参考这个问题,那么可以接受的颜色为 normalblackredgreenyellowbluemagentacyanwhite,还可以选择一个修饰符 bolddimulblinkreverse。如果给出两个颜色,则第一个是前景色,第二个是背景色。


1
谢谢 - 我的生活现在已经完整了!对于任何可能遇到问题的人,我想说,在我安装了更新版本的posh-git之前,它并没有起作用。 - ckapilla
5
这适用于Windows上的任何git版本,而不仅仅是posh git。 - Michael Landes
5
这个方法甚至在PowerShell上也可以使用。对于提高我的生产力有很大帮助。 - Click Ok
5
使用模式git config <需要更新的颜色>“前景色 背景色 属性”,例如git config --global color.status.changed "cyan normal bold" - Matthew McDermott
ul 应该如何处理颜色?我看不出任何区别,也不是很明显。其他的都很好:+1! - Konrad Viltersten
显示剩余2条评论

64

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

您可以直接在窗口上进行修改(属性→颜色),也可以在注册表中进行修改。提示符是另外一回事:它使用PS颜色名称,其中Red = Red,而不是DarkRed...


3
太棒了!我从未意识到属性中的颜色集是一个调色板,所有元素都可以从中绘制颜色。 - Ben Wilde
2
我不会撒谎,我对于从属性窗口更改红色颜色还是有些怀疑的...但是,结果完全准确。非常好的答案 =) - afreeland
非常好!如果您使用标准控制台(而不是ISE),它也适用于Powershell。它适用于git状态和posh-git。我只需转到“属性”->“颜色”,单击深红色并将其红色值更改为255即可。现在运行得非常好。非常感谢! - Tolga
非常有帮助。我一直对红色状态信息感到很烦恼。一直试图更改它,但没有成功。将红色值简单地改为15对我来说非常有效。 - Charasala
运行PowerShell。非常有帮助。谢谢。 - jdawiz
我对PowerShell中的颜色配置感到非常沮丧。很高兴找到了这个答案! - Gershom Maes

14

除了@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

"diff"选项使您可以使用鲜艳(加粗)的红色和绿色颜色。参考:https://git-scm.com/docs/git-config#git-config-colordiff


14

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

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

此外,将GitPrompt.ps1更新为以黄色显示未跟踪的内容可能是一个不错的主意:

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

编辑: GitPrompt.ps1可以在PowerShell posh-git文件夹中找到。


这是一个非常优秀的答案,避免了很多复杂性和第三方内容。这绝对是+1的。但是,我想看到两个东西。第一个是提及和完整列出其他可设置颜色属性的参考(如果有的话)。第二个建议如何设置任意颜色(最好是十六进制值,但也可以提供可用颜色数字的列表)。当然,第二个建议只有如果可能的话(依我的经验,这是一个相当大的“如果”)。 - Konrad Viltersten

8

您可以通过修改PowerShell posh-git模块文件夹中GitPrompt.ps1文件的源代码来更改这些内容。我曾经遇到同样的问题,只需在该文件中大约30行附近定义的颜色中删除“Dark”即可。

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颜色列表也很有用。

2
这个方法可以改变命令提示符上显示的缩略状态的颜色(例如:[master +1 ~0 -0 | +2 ~0 ~0]),但它无法改变“git status”命令输出的颜色。BartekB的建议也没有起作用。 - John Pankowicz
在我的两个位置上都成功运行,但仅在获取了最新版本的 posh-git 后。 - ckapilla
使用PowerShell和Git Bash中的标准Git对我来说运行良好(Posh是什么,哈哈)。 - Stéphan Champagne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接