Mostrar apenas linhas alteradas sem sintaxe com git diff

0

Eu tenho uma lista de nomes de usuários que estão em um arquivo de texto. Eu atualizo este arquivo e o confirmo. Eu estou procurando uma maneira de obter uma lista das alterações desde o último commit.

Eu não quero nenhuma formatação do diff, eu só quero obter uma saída que tenha nomes de usuário um por linha (como eles são adicionados a cada commit) desde o último commit.

Não consigo encontrar uma configuração que remova toda a sintaxe do git diff da saída, por isso é puramente uma lista de novas linhas adicionadas apenas.

Exemplo

Arquivo original:

user1
user2
user3

Eu então adiciono

user4
user5

Em seguida, confirme.

Eu quero ser capaz de fazer um diff do git e ver apenas:

user4
user5
    
por Michael 15.06.2018 / 11:47

2 respostas

2

Você poderia grep a saída do diff combinando lookahead / lookbehind:

git diff --unified=0 | grep -Po '(?<=^\+)(?!\+\+).*'
  • (?<=^\+) é um lookbehind positivo para a linha que começa com +
  • (?!\+\+) é uma antecipação negativa para impedir que cabeçalhos de arquivos correspondentes iniciem com +++ a/path/to/file .

A opção --unified=0 git está lá apenas para reduzir o número de linhas para filtrar a remoção do contexto do diff, embora seja opcional.

Existe provavelmente melhor, não sou fluente em PCRE.

    
por 15.06.2018 / 13:49
2

Pegando emprestado --unified=0 da resposta kaiko eu vim para:

git diff HEAD^ HEAD --unified=0 | tail +6 | sed -e 's/^\+//'
    
por 15.06.2018 / 23:21