Git颜色合并/ rebase冲突

时间:2012-03-13 14:43:46

标签: 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"

这将为所有冲突线着色,但是:

  • 无法更改传递给合并的选项
  • 要跟踪的分支机构没有完成

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

干杯

4 个答案:

答案 0 :(得分:5)

另一种选择可能是创建git alias。这对我来说比较好,因为它会将git特定的自定义设置保存在一起,而不是漂浮在某个不相关的.profile文件的其他地方。

~/.gitconfig或本地git项目.git/config添加类似内容也应该有效:

[alias]
    color-merge = "!f() { git merge $@ | egrep --color 'CONFLICT .*|$' ; }; f"

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

请注意,您的shell GREP_COLOR environment variable将控制使用的颜色。

答案 1 :(得分:1)

这是一个bash函数,可以帮助你(分支完成除外):

   git-merge-color () { git merge  $@ | egrep --color 'CONFLICT .*|$'; }

您可以使用任何'git merge'参数调用git-merge-color。

答案 2 :(得分:1)

这是一个从较新问题引用的旧问题,它是我的Google搜索结果中出现的第一个问题,因此我认为5年后发布更新的答案很方便:

只需将行unmerged = <color>添加到您的git设置文件([color "status"])中的~/.gitconfig组中,就像这样:

[color "status"]
     unmerged  = yellow

我正在使用git --version 2.11.0 。所以是的,最后git支持它: - )

答案 3 :(得分: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

因此,恐怕没有合并冲突的颜色。