Para diferenciar arquivos binários no git, presumo que precise configurar um difftool.
O difftools funciona? Como você coloca os parâmetros?
Para diferenciar arquivos binários no git, presumo que precise configurar um difftool.
O difftools funciona? Como você coloca os parâmetros?
Respostas:
Você pode definir uma textconv
opção de configuração para um tipo de arquivo. Consulte "Executando diferenças de texto de arquivos binários" em gitattributes (5) . O que você deve usar depende do tipo de arquivo.
Exemplo 1 :
Digamos que você queira diferenciar o conteúdo dos arquivos zip. Nesse caso, você deve colocar o seguinte no arquivo $ GIT_DIR / config ou $ HOME / .gitconfig.
[diff "zip"]
textconv = unzip -v
Da próxima vez que você solicitar uma comparação em um arquivo zip em um repositório, ele unzip -v
acessará a versão e o texto resultante.
Exemplo 2 :
Para arquivos pdf, você pode usar, por exemplo pdfinfo
;
[diff "pdf"]
textconv = pdfinfo
Exemplo 3 :
Se não houver um utilitário de informações específico para um tipo de arquivo, você pode, por exemplo, utilizá-lo hexdump
(vem com FreeBSD e OSX, também disponível no Linux):
[diff "bin"]
textconv = hexdump -v -C
A resposta de Roland Smith foi útil, mas atualmente está incompleta (veja os comentários) - há duas partes nisso.
Você pode definir um novo comando diff no .git/config
arquivo do seu repositório ou no seu ~/.gitconfig
arquivo global pessoal , por exemplo, um comando hex diff usando hexdump
:
[diff "hex"]
textconv = hexdump -v -C
binary = true
Em seguida, você precisa usar o .gitattributes
arquivo do repositório para informar ao git quais arquivos devem ser usados com este comando diff especial:
# Binary files (no line-ending conversions), diff using hexdump
*.bin binary diff=hex
Como o .gitignore
arquivo, o .gitattributes
arquivo deve ser verificado em seu repositório.
No meu caso, tenho várias extensões de arquivo diferentes que quero tratar como binárias (por exemplo, evite conversões de final de linha se estiver usando git no Windows) e também vejo diferenças através de hexdump
:
https://github.com/peterjc/galaxy_blast/commit/5ec4695e6c3da3926fb100ca006f0f3e88c53c3d
Consulte também https://github.com/resin-io/etcher/pull/1367 para obter outro exemplo de definição de um comando diff hexdump para uso com arquivos de imagem.
.gitattributes
globalmente (para acompanhar as [diff]
entradas no seu global .gitconfig
). Se você criar o .gitattributes
local para o repositório, o usuário precisará modificar suas .gitconfig
configurações de repositório local porque, por motivos de segurança, eles não serão enviados ao controle remoto. De qualquer maneira, cada usuário precisa atualizar seus arquivos / configurações locais de alguma forma para ativar esse comportamento. Em .gitconfig
sub [core]
add attributesfile = c:/users/<username>/.gitattributes
ou onde você quiser armazená-lo, se você o tornar global (observe as barras para frente, mesmo nas janelas).
As opções acima são maneiras abrangentes de fazer isso. No entanto, se você só precisar fazer isso com alguns arquivos, o seguinte método é o que eu uso:
git checkout HEAD -- /path/to/file > ~/file
vimdiff ~/file /path/to/file
Aqui estou usando, vimdiff
mas você pode usar qualquer outra ferramenta. O descrito acima também pode ser combinado em um pequeno script se você precisar fazer isso repetidamente.