2012-03-13 103 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支持它:-)