git diff colorido, numerado e paginado

5

O comportamento padrão de git diff - syntax-colored, paged - é muito bom de se trabalhar, mas seria um pouco mais agradável com números de linha para contexto, particularmente para diffs maiores e especialmente para a página final.

git diff | nl | more

quase me dá tudo o que preciso, mas descarta a coloração; de alguma forma eu posso recuperar isso?

    
por Bobby Jack 15.01.2017 / 15:49

4 respostas

10

use less -r para exibir a cor, mas você precisará forçar git a usar as cores porque, quando você canalizar git diff , ela será difusa para --nocolor

git diff --color HEAD~3 HEAD | nl | less -R

Se você quiser obter os números de linha por linha, tente pesquisar as soluções sugeridas aqui, link

    
por 15.01.2017 / 16:06
1

Em vez de canalizar git log , você pode usar a numeração de linha interna de less . Digitar -N em less fará com que ele exiba números de linha.

    
por 17.01.2017 / 23:55
1

A resposta de Dylan Frese me fez investigar um pouco, e acredito que esta solução seja um pouco melhor do que a que eu aceitei anteriormente; para os meus propósitos, de qualquer maneira.

git config --global --replace-all core.pager 'less -NR'

Isso me permite git diff e nem preciso pensar nisso. Claro, há ocasiões em que você pode não querer que isso seja uma mudança permanente e global, portanto, a informação. aqui tudo ainda é válido.

    
por 19.01.2017 / 12:05
-1

Teste showlinenum e canalize-o para less -R , por exemplo

git diff --color=always | showlinenum.awk | less -R

Sobreoshowlinenum,bastaclonarorepositóriodogithubecopiarshowlinenum.awkparaPATH.Oscriptlhedaráumnúmerodelinhaexato.

Vocêtambémpodequererusargitdifftool.Sevocêestiverconfortávelcomless,entãovimdiff(gitdifftool-tvimdiff)éumaboaideia:

Leia man git-difftool para saber mais.

    
por 15.01.2017 / 16:11