2012-03-13 256 views
11

我想知道是否有人有一个技巧,当出现冲突时着色合并或rebase的输出。 我想特别颜色的文件名而行,例如第二行的位置:Git颜色合并/底线冲突

Auto-merging CMakeLists.txt 
CONFLICT (content): Merge conflict in CMakeLists.txt 
Failed to merge in the changes. 

感谢

编辑:

使用Git别名和bash的功能,我可以这样写:

color-merge = "!f() { git merge --no-commit --stat $1| egrep --color 'CONFLICT .*|$'; }; f" 

这将颜色的所有冲突行,但:

  • 这是不可能改变通过合并
  • 上有分支没有完成被跟踪

所以我在寻找的东西更强大的选项。

干杯

+0

'git config --global color.ui auto'?! – 2012-03-13 15:04:11

+0

我有颜色=总是,但不符合我的要求。 – Pluc 2012-03-13 18:23:52

+2

从这个问题两年后,git仍然不支持CONFLICT上的颜色,这太疯狂了! – huocp 2014-07-25 01:09:39

回答

0
[color] 
    branch = auto 
    diff = auto 
    status = auto 

[color "branch"] 
    current = yellow reverse 
    local = yellow 
    remote = green 

[color "diff"] 
    meta = yellow bold 
    frag = magenta bold 
    old = red bold 
    new = green bold 

[color "status"] 
    added = yellow 
    changed = green 
    untracked = cyan 

http://jblevins.org/log/git-colors 

因此,没有色彩,为合并冲突我害怕。

+0

感谢您的链接。事实上,只有git config才能实现,但它必须可以通过添加bash命令来实现。 – Pluc 2012-03-13 18:26:11

1

这里是一个bash的功能,让你有(除分​​支完成):

git-merge-color() { git merge [email protected] | egrep --color 'CONFLICT .*|$'; } 

您可以调用混帐合并色与任何'混帐合并的论点,你请。

+0

我将如何应用/调用此?它对我来说看起来很有希望,但是当涉及到bash时,我是一个完整的noob。 – 2016-05-13 14:34:55

4

另一种选择可能是创建一个git alias。这对我来说比较可取,因为它可以将git特定的定制保存在一起,而不是在其他地方的某个不相关的.profile文件中浮动。

添加这样的事情你~/.gitconfig或本地Git项目的.git/config也应努力:

​​

调用它像这样:git color-merge branch --option1

注意你的shell GREP_COLOR environment variable将控制使用的颜色。

+0

如果我错了,有人纠正我,但是这种方法利用了[shellshock](http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271)漏洞bash,对吧?或者它看起来很相似。毕竟它并没有使用ENV变量。 – beporter 2014-10-01 14:51:45

1

这是新问题,引用一个老问题,那就是在我的谷歌搜索结果中出现的第一个,所以我认为这是方便发布更新的答案5年以后:

只需添加一行unmerged = <color>[color "status"]组使用Git的设置文件(~/.gitconfig),像这样:

[color "status"] 
    unmerged = yellow 

我使用git --version2.11.0。所以是的,最后git支持它:-)