git diff - manipulação linhas longas?
Pergunta
Estou correndo git-diff em um arquivo, mas a mudança é no final de uma longa linha.
Se eu usar teclas do cursor para mover para a direita que perde a cor de codificação e pior as linhas não se alinham, tornando mais difícil para acompanhar a mudança.
Existe uma maneira de evitar esse problema, ou simplesmente para tornar as linhas embrulhar vez?
(executando git 1.5.5 via mingw32)
Solução
A exibição da saída do git diff
é tratado por qualquer pager que você está usando.
Normalmente, sob Linux, seria usado less
.
Você pode dizer git para usar um pager diferente, definindo a variável de ambiente GIT_PAGER
. Se você não se importa cerca de paginação (por exemplo, o terminal permite que você rolar para trás) que você pode tentar definir GIT_PAGER
para esvaziar para pará-lo usando um pager explicitamente. No Linux:
$ GIT_PAGER='' git diff
Sem um pager, as linhas vai embrulhar.
Se seu terminal não suporta saída de cor, você também pode desligar isso usando o argumento --no-color
, ou colocar uma entrada na seção de cor do seu arquivo git config.
$ GIT_PAGER='' git diff --no-color
Outras dicas
Ou se você usar menos como paginador padrão basta digitar -S
enquanto visualiza o diff para embrulho reative em menos.
Você também pode usar git config
para pager configuração para embrulhar.
$ git config core.pager 'less -r'
Define a configuração de pager para o projeto atual.
$ git config --global core.pager 'less -r'
Define o pager globalmente para todos os projetos
Com o crédito total a Josh Diehl em um comentário para esta resposta ??a >, I, no entanto, sinto que isso deveria ser uma resposta em si mesmo, então adicionando-o:
Uma maneira de lidar com ver diferenças em linhas longas é usar um diff orientada a palavra. Isso pode ser feito com:
git diff --word-diff
Neste caso, você vai ter uma saída de diff significativamente diferente, que lhe mostra especificamente o que mudou dentro de uma linha.
Por exemplo, em vez de começar algo como isto:
diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
-this is a short line
+this is a slightly longer line
Você pode obter algo como isto:
diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
this is a [-short-]{+slightly longer+} line
Ou, com colorização, em vez disso:
Você pode obter isso:
Agora, se você está comparando uma linha muito longa, você ainda pode ter problemas com a situação pager que inicialmente descrito, e que tem sido abordada, aparentemente para satisfação, em outras respostas. Esperemos que este dá-lhe uma nova ferramenta, porém, para identificar mais facilmente o que na linha mudou.
Para usar menos como a linha de pager e fazer envolvimento permanente você pode simplesmente ativar a opção de-longo-de linhas de dobragem:
git config --global core.pager 'less -+S'
Desta forma, você não tem que digitá-lo usando menos.
Felicidades
Apenas pesquisei-se um presente. obras GIT_PAGER='less -r'
para me
Mac OSX: Nenhuma das outras respostas, exceto someone45 de '-S' enquanto menos está funcionando funcionou para mim. Levou o seguinte para fazer palavra-wrap persistente:
git config --global core.pager 'less -+$LESS -FRX'
Uma vez que Git 1.5.3 ( setembro 2007 )
a opção --no-pager
está disponível.
git --no-pager diff
Como posso evitar que git diff de usar um pager?
A partir da v2.1, envoltório é o padrão
Oito anos mais tarde, eu encontrar uma resposta superior, a partir de https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :
git config core.pager `fold -w 80 | less`
Agora você canalizar o git diff através vezes, em primeiro lugar, em seguida, para menos:. Embrulhado, menos página-altura está correta, destaque de sintaxe manter
Você poderia simplesmente canalizar a saída do git diff a mais:
git diff | more
Nem uma solução perfeita, mas gitk
e git-gui
pode mostrar tanto esta informação,
e ter barras de rolagem.
Quando você estiver usando "git diff" e ele está mostrando várias páginas (ver ":" no final da página), neste caso, você pode digitar "-S" e pressione enter (S deveria ser a capital).. ele vai alternar as linhas de dobragem de comprimento.
Noone apontou isso até agora. Sua bastante simples de lembrar e nenhuma configuração adicional precisa ser feito no git configuração
git diff --color | less -R
lista atual config / padrão:
$ git config --global core.pager
less -FXRS -x2
, em seguida, atualizar e deixar de fora os -S como:
$ git config --global core.pager 'less -FXR -x2'
o-s:. Provoca linhas mais longo do que a largura da tela a ser cortado, em vez de dobrado
Quando estiver em apuros, eu muitas vezes recorrem a DiffMerge. Excelente ferramenta de comparação que tem em linha de realce diff. Além disso, nas versões mais recentes acrescentaram um modo de ter um modo horizontal.
Eu não tenho sido capaz de git configure a usá-lo, no entanto. Então eu tenho que mexer para obter as duas versões do arquivo primeiro.
A maneira mais fácil de fazê-lo, no meu caso eu uso Linux OS
git diff > text.txt
Esta linha de comandos criar e coloca a saída git diff dentro do text.txt então você pode abri-lo com outro editor de texto para texto exemplo sublime.
sublime text.txt
Hope-lo ajudá-lo.
não se esqueça excluí-lo depois. = 0)