2012-03-13 21 views
11

Mi chiedevo se qualcuno avesse un trucco per colorare l'output di un'unione o di un rebase quando c'è un conflitto. voglio colorare specialmente la linea con il nome del file, ad esempio, la seconda linea qui:Conflitti fusione Git colore/rebase

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

Grazie

EDIT:

Usando alias Git e una funzione di bash posso scrivere questo:

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

Questo colorare tutte le linee di conflitto, ma:

  • E 'impossibile cambiare le opzioni passate per unire
  • Non v'è alcuna conclusione sul ramo per essere monitorati

Così sto cercando qualcosa di più potente.

Acclamazioni

+0

'git config --global color.ui auto'?! –

+0

Ho colore = sempre ma quello non fa quello che voglio. – Pluc

+2

è pazzesco che git non supporti ancora il colore su CONFLICT dopo due anni da questa domanda! – huocp

risposta

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 

Quindi non colori per un conflitto di unione ho paura.

+0

Grazie per il link. In effetti ciò non può essere ottenuto con git config, ma deve essere possibile aggiungendo comandi bash. – Pluc

1

Ecco una funzione bash che si ottiene lì (tranne che per il completamento ramo):

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

È possibile richiamare git-merge-color con argomenti 'git merge' che si prega.

+0

Come posso applicare/invocare questo? Sembra davvero promettente per me, ma sono un noob completo quando si tratta di bash. –

4

Un'altra opzione potrebbe essere quella di creare un git alias. Questo è preferibile per me perché mantiene le personalizzazioni specifiche di git insieme invece di fluttuare altrove in un file .profile non correlato da qualche parte.

Aggiunta di qualcosa di simile al vostro ~/.gitconfig o del progetto Git locale .git/config dovrebbe funzionare anche:

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

invocarlo in questo modo: git color-merge branch --option1

noti che della shell GREP_COLOR environment variable controllerà il colore utilizzato.

+0

Qualcuno mi corregge se sbaglio, ma questo approccio sta sfruttando la vulnerabilità [shellshock] (http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271) in bash, giusto? O forse sembra solo simile. Dopotutto, non sta usando una vena ENV. – beporter

1

Questa è una vecchia questione fa riferimento dalle domande più recenti, ed è il primo che appare sui miei risultati di ricerca di Google, quindi penso che sia conveniente per inviare la risposta aggiornato 5 anni più tardi:

basta aggiungere la linea unmerged = <color> in [color "status"] gruppo nel file di impostazioni Git (~/.gitconfig), in questo modo:

[color "status"] 
    unmerged = yellow 

sto usando git --version2.11.0. Quindi sì, finalmente git supportato :-)

Problemi correlati