Diff Thinks Files Are Binary Options




Diff Thinks Files Are Binary OptionsNacho4d: That39s estranho, porque git shouldn39t mesmo saber que existem quaisquer atributos estendidos. Se voce pudesse reproduzi-lo, valeria a pena trazer na lista de discussao do git. Como e bom personalizado nas listas vger. kernel. org, voce nao precisa se inscrever para postar (as pessoas vao mante-lo CC39ed para respostas) e sao tipo de suposto nao dado o volume bastante alto da lista gitvger. kernel. org. Simplesmente significa que quando git inspeciona o conteudo real do arquivo (ele nao sabe que qualquer extensao nao e um arquivo binario - voce pode usar o arquivo de atributos se voce quiser dizer Explicitamente - veja as paginas man). Tendo inspecionado o conteudo dos arquivos, ele viu coisas que nao estao em caracteres ASCII basicos. Sendo UTF16 eu espero que ele tera personagens engracados assim que pensa seu binario. Existem maneiras de dizer ao git se voce tem internacionalizacao (i18n) ou formatos de caracteres estendidos para o arquivo. Im nao suficientemente sobre o metodo exato para a definicao que - voce pode precisar de RTFullM -) Edit: uma rapida pesquisa de SO encontrado can-i-make-git-reconhecer-a-utf-16-file-as-text que deve Dar-lhe algumas pistas. Voce esta quase, mas nao completamente, nao esta errado. Git tinha inspecionado os arquivos reais e ja vimos 39 personagens. No entanto, nao e quotthinkquot UTF-16 e binario. E binario, porque o texto e definido como ASCII-based (that39s a unica coisa que o built-in diff dara resultados utilizaveis ??para) e UTF-16 nao e. Sim, existe uma maneira de dizer ao git para usar o diff especial para arquivos definidos por padrao (usando. gitattributes). Ndash Jan Hudec Jul 28 11 at 9:27 Eu deveria acrescentar, que 39 personagens engracados39 realmente significa zero bytes. Ndash Jan Hudec Jul 28 11 at 9:31 Ambos temos razao, mas de perspectivas diferentes. Nos dois dizemos quotGit inspeciona o conteudo para determinar seu tipo. Ambos dizemos que para fazer git saber que deve ser tratado como UTF16 o usuario precisa dizer git via. gitattributes etc ndash Philip Oakley Jul 28 11 at 9:34 What is O oposto de check-attr - ha um set-attr Eu originalmente salvo acidentalmente um arquivo como UTF-16, entao comprometido e empurrado, e agora BitBucket ve-lo como UTF-16, mesmo depois de re-salva-lo como UTF-8 , Comprometendo e empurrando-o novamente. Isso basicamente torna meus pedidos de solicitacao impossiveis de ler porque os revisores precisam clicar em cada comentario individual para adicionar comentarios de revisao. Ndash John Zabroski Jan 4 as 16:15 Git vai mesmo determinar que e binario se voce tem uma linha super-longa em seu arquivo de texto. Eu quebrei uma Cadeia de caracteres longa, transformando-a em varias linhas de codigo-fonte, e de repente o arquivo passou de ser binario para um arquivo de texto que eu poderia ver (em SmartGit). Entao nao continue digitando muito para a direita sem bater Enter em seu editor - caso contrario, mais tarde Git vai pensar que voce criou um arquivo binario. Esta e uma informacao correta. Eu estava tentando controlar diffs para um extremamente grande Dump MySQL (arquivo. Sql), mas git trata-lo como um arquivo binario, mesmo se ele tem apenas ASCII / UTF8 dados nele. A razao e que as linhas sao super-long (inserir valores (um), (dois), (tres), (.), (3 milhoes.) Estranho, para cada commit, o repositorio git nao aumenta em 1.7gb , Mas apenas 350 MB Talvez, git esta comprimindo o arquivo quotbinaryquot antes de salva-lo. NDASH Alexandre T. Jan 15 at 17:55 Eu estava tendo esse problema onde Git GUI e SourceTree estava tratando os arquivos Java / JS como binario e, assim, couldnt ver a diferenca A criacao de atributos de arquivo nomeados na pasta. gitinfo com o seguinte conteudo resolveu o problema Se voce quiser fazer essa alteracao para todos os repositorios, entao voce pode adicionar arquivo de atributos na seguinte localizacao HOME /.config / git / attributes Eu tive esse mesmo problema apos a edicao de um Dos meus arquivos em um novo editor. Descreve o novo editor usado uma codificacao diferente (Unicode) do que o meu editor antigo (UTF-8).Entao eu simplesmente disse ao meu novo editor para salvar meus arquivos com UTF-8 e, em seguida, git mostrou o meu Muda corretamente novamente e didnt ve-lo como um arquivo binario. Eu acho que o problema era simplesmente que git doesnt saber comparar arquivos de diferentes tipos de codificacao. Portanto, o tipo de codificacao que voce usa realmente nao importa, desde que permaneca consistente. Eu nao testei, mas tenho certeza se eu teria apenas cometido meu arquivo com a nova codificacao Unicode, da proxima vez que eu fiz alteracoes nesse arquivo que teria mostrado as alteracoes corretamente e nao detectou como binario, uma vez que teria Foi comparando dois arquivos codificados Unicode, e nao um arquivo UTF-8 para um arquivo Unicode. Voce pode usar um aplicativo como o Bloco de Notas para ver e alterar facilmente o tipo de codificacao de um arquivo de texto Abra o arquivo no Bloco de Notas e use o menu Codificacao na barra de ferramentas. Eu sei que existe uma postagem semelhante a esta. Aqui . Eu tentei usar o comando comp como mencionado, mas se eu tiver dois arquivos, um com dados como abcd eo outro com dados abcde, ele so diz que os arquivos sao de tamanhos diferentes. Eu queria saber onde exatamente eles diferem. No Unix, o diff simples diz-me que linha e coluna, o comando comp em janelas funciona se eu tenho algo como abd e abc. De outra forma. Qualquer ideia que eu posso usar para isso perguntou Jul 29 11 at 18:11 FC funciona muito bem no meu caso, nao foi util como eu queria apenas as linhas que sao alteradas. E FC dar dados adicionais como nome do arquivo, as mesmas linhas e comparacao bilateral. Mas no meu caso eu queria apenas as linhas que mudaram e queria que essas linhas para ser exportado para arquivo diferente, sem qualquer outro cabecalho ou dados. Entao eu usei findstr para comparar o arquivo: data. txt. bak e o nome do arquivo antigo data. txt e o nome do novo arquivo DiffResult. txt contem os dados que e alterado ou seja, apenas uma linha 09 respondeu 1 Jun 15 as 19: 51 / A apenas primeira linha e ultima linha de bloco que e alterado / N mostrar numeros de linha ndash Lukas Dec 2 15 at 10:13 Theres tambem Powershell (que e parte do Windows). Nao e rapido, mas e flexivel, heres o comando basico. As pessoas escreveram varios cmdlets e scripts para ele se voce precisar de uma melhor formatacao. Nao faz parte do Windows, mas se voce e um desenvolvedor com o Visual Studio, ele vem com WinDiff (grafico) Mas o meu favorito pessoal e BeyondCompare, que custa 30. A razao pela qual voce esta recebendo o erro com o COMP e que o utilitario assume os arquivos que voce Estao comparando sao do mesmo tamanho. Para superar isso voce pode usar th / n opcao com a qual voce pode especificar o numero de linhas que voce deseja comparar. (Veja as opcoes suportadas pelo comp, digitando comp / na linha de comando para que seu comando seria semelhante. Isso deve resolver o seu problema se voce quiser ficar usando o COMP. Mas isso sera um problema para arquivos realmente grandes. Uma opcao, mas eu sinto que e primitiva e FC e uma opcao melhor. voce pode usar FORFILES e FC juntos para provavelmente fazer um utilitario filecompare realmente bom se voce precisar de um em uma base frequente. FC e usado dessa maneira para ref: ha Muitas opcoes disponiveis que voce pode ver por fc / espero que isso ajude respondido Jan 30 15 at 6:04 Eu nao sei se a seguinte ferramenta e exatly o que voce precisa. Mas eu gosto de usar, para arquivos especificos, alguma ferramenta on-line. Eu posso usa-lo independentemente do sistema operacional. Aqui esta um exemplo: diffchecker Mas para as minhas necessidades, acho que a melhor ferramenta para controlar as alteracoes e logs dos meus arquivos de projetos e GIT. Se voce trabalha em uma equipe, voce pode ter algum repo Online em um servidor do seu, ou usa-lo com Bitbucket ou Github. Espero que ajude alguem. referido Aug 16 15 at 14:54 As janelas equivalente ao comando diff e o comando fc (File Comapre). Aqui estao os passos basicos para fazer isso: 1. Mantenha os dois arquivos em uma pasta (Exemplo file1 e file2) 2. Inicie o prompt de comando 3. Digite fc file1Location file2Location Encontraram um tutorial detalhado sobre o mesmo: respondido August 16 15 at 14 : 41 Sua resposta 2016 Stack Exchange, IncClique em qualquer um dos 687 comandos abaixo para obter uma descricao e uma lista de opcoes disponiveis. Todos os links nos resumos de comandos apontam para a versao online do livro no Safari Bookshelf. Diff Compare dois arquivos de texto. Diff relata linhas que diferem entre file1 e file2. A saida consiste em linhas de contexto de cada arquivo, com o arquivo1 texto sinalizado por um simbolo lt e o arquivo2 por um simbolo gt. As linhas de contexto sao precedidas pelo comando ed (a c ou d) que seria usado para converter file1 para file2. Se um dos arquivos for -. A entrada padrao e lida. Se um dos arquivos for um diretorio, diff localiza o nome do arquivo nesse diretorio correspondente ao outro argumento (por exemplo, diff mydir junk e o mesmo que diff mydir / junk junk). Se ambos os argumentos sao diretorios, o diff relata as linhas que diferem entre todos os pares de arquivos com nomes equivalentes (por exemplo, olddir / programa e newdir / programa). Alem disso, diff lista nomes de arquivos exclusivos de um diretorio, bem como subdiretorios comuns a ambos. Consulte tambem cmp. Options Trate todos os arquivos como arquivos de texto. Util para verificar se os arquivos binarios sao identicos. Ignore repetir espacos em branco e espacos em branco de fim de linha tratar espacos em branco sucessivos como um. Ignorar linhas em branco nos arquivos. Contexto diff. Imprima 3 linhas em torno de cada linha mudada. Contexto diff. Imprima n linhas ao redor de cada linha alterada. O contexto padrao e 3 linhas. Para acelerar a comparacao, ignorar segmentos de varias mudancas e produzir um conjunto menor de alteracoes. Ao manusear arquivos C, crie um arquivo de saida que contenha todo o conteudo de ambos os arquivos de entrada, incluindo as diretivas ifdef e ifndef que refletem as diretivas em ambos os arquivos. Produza um script de comandos (a. c. D) para recriar o arquivo2 a partir do arquivo1 usando o editor ed. Para contexto e dif unificado. Mostra a linha mais recente contendo regexp antes de cada bloco de linhas alteradas. Velocidade de saida de arquivos grandes por varredura para pequenas mudancas espalhadas alongamentos longos com muitas mudancas podem nao aparecer. Imprimir mensagem de uso breve. Na tentativa de encontrar uma listagem mais compacta, mantenha n linhas em ambos os lados das linhas alteradas ao realizar a comparacao. Ignorar caso na comparacao de texto. Maiusculas e minusculas sao consideradas iguais. Ignore linhas em arquivos que correspondem a expressao regular regexp. Pagine a saida passando-a para pr. Para contexto e dif unificado. Imprimir no lugar do nome do arquivo que esta sendo comparado. A primeira opcao se aplica ao primeiro nome do arquivo e a segunda opcao ao segundo nome do arquivo. Para saida de duas colunas (-y), mostre apenas a coluna esquerda de linhas comuns. Produza saida no formato RCS diff. Trate os arquivos inexistentes como vazios. Ao manusear arquivos em linguagens C ou C-like, como Java, mostre a funcao que contem cada bloco de linhas alteradas. Assume - c. Mas tambem pode ser usado com um diff unificado. Se dois diretorios estiverem sendo comparados e o primeiro nao tiver um arquivo que esteja no segundo, finja que um arquivo vazio desse nome existe no primeiro diretorio. Saida somente se os arquivos diferem. Compare subdiretorios recursivamente. Indique quando os arquivos nao sao diferentes. Para comparacoes de diretorio, comece com o nome do arquivo. Ignorando arquivos que vem antes na ordem de lista padrao. Para saida de duas colunas (-y), nao mostram linhas comuns. Produza saida com guias expandidas para espacos. Insira as guias iniciais na saida para alinhar as guias corretamente. Dif. Unificada. Imprima versoes antigas e novas de linhas em um unico bloco, com 3 linhas em torno de cada bloco de linhas alteradas. Dif. Unificada. Imprima versoes antigas e novas de linhas em um unico bloco, com n linhas ao redor de cada bloco de linhas alteradas. O contexto padrao e 3 linhas. Imprime o numero da versao desta versao do diff. Ignorar todos os espacos em branco em arquivos para comparacoes. Para saida de duas colunas (-y), produza colunas com uma largura maxima de n caracteres. O padrao e 130. Nao compare arquivos em um diretorio cujos nomes correspondam a regexp. Nao compare arquivos em um diretorio cujos nomes correspondam a padroes descritos no nome do arquivo. Produza saida de duas colunas. Para contexto e dif unificado. Imprimir n linhas de contexto. O mesmo que especificar um numero com - C ou - U .1.7 Arquivos Binarios e Forcar Comparacoes de Texto Se diff achar que um dos dois arquivos que esta comparando e binario (um arquivo nao-texto), ele normalmente trata esse par de arquivos muito como Se o formato de saida de resumo tivesse sido selecionado (consulte a secao 1.6 Resumindo quais arquivos diferem) e relata apenas que os arquivos binarios sao diferentes. Isso ocorre porque as comparacoes linha a linha geralmente nao sao significativas para arquivos binarios. Diff determina se um arquivo e texto ou binario, verificando os primeiros poucos bytes no arquivo o numero exato de bytes e dependente do sistema, mas normalmente e varios milhares. Se cada byte nessa parte do arquivo nao for nulo, diff considera o arquivo como texto, caso contrario considera o arquivo como binario. As vezes, voce pode querer forcar o diff a considerar arquivos como sendo texto. Por exemplo, voce pode estar comparando arquivos de texto que contem caracteres nulos diff seria erroneamente decidir que esses sao arquivos nao-texto. Ou voce pode estar comparando documentos que estao em um formato usado por um sistema de processamento de texto que usa caracteres nulos para indicar formatacao especial. Voce pode forcar diff a considerar todos os arquivos como arquivos de texto e compara-los linha a linha, usando a opcao - a ou --text. Se os arquivos que voce compara usando esta opcao nao contiverem texto, eles provavelmente conterao poucos caracteres de nova linha, ea saida diff consistira de hunks mostrando diferencas entre longas linhas de quaisquer caracteres que os arquivos contenham. Voce tambem pode forcar o diff a considerar todos os arquivos como arquivos binarios e relatar somente se eles diferem (mas nao como). Use a opcao - q ou --brief para isso. Diferentes arquivos binarios sao considerados causadores de problemas porque a saida de resultado resultante nao captura todas as diferencas. Esse problema faz com que diff sai com o status 2. No entanto, esse problema nao pode ocorrer com a opcao --a ou --text, ou com a opcao - q ou --brief, pois essas opcoes fazem com que diff trate arquivos binarios como texto arquivos. Em sistemas operacionais que distinguem entre texto e arquivos binarios, diff normalmente le e grava todos os dados como texto. Use a opcao --binary para forcar o diff a ler e gravar dados binarios. Esta opcao nao tem efeito em um sistema compativel com POSIX, como o GNU ou Unix tradicional. No entanto, muitos sistemas operacionais de computadores pessoais representam o fim de uma linha com um retorno de carro seguido de uma nova linha. Em tais sistemas, diff normalmente ignora esses retornos de carro na entrada e os gera no final de cada linha de saida, mas com a opcao - bin binaria trata cada retorno de carro como apenas outro caractere de entrada e nao gera um retorno de carro no Final de cada linha de saida. Isso pode ser util ao lidar com arquivos nao-texto que devem ser trocados com sistemas compativeis com POSIX. O --strip-trailing-cr faz com que diff trate as linhas de entrada que terminam em retorno de carro seguido de nova linha como se terminassem em nova linha simples. Isso pode ser util ao comparar texto que e imperfeitamente importado de muitos sistemas operacionais de computadores pessoais. Esta opcao afeta como as linhas sao lidas, o que, por sua vez, afeta como elas sao comparadas e produzidas. Se voce quiser comparar dois arquivos byte por byte, voce pode usar o programa cmp com a opcao - l para mostrar os valores de cada byte diferente nos dois arquivos. Com GNU cmp. Voce tambem pode usar a opcao - b para mostrar a representacao ASCII desses bytes. Consulte a secao 12. Chamando cmp. Para maiores informacoes. Se diff3 pensar que qualquer um dos arquivos que esta comparando e binario (um arquivo nao-texto), ele normalmente relata um erro, porque essas comparacoes geralmente nao sao uteis. Diff3 usa o mesmo teste como diff para decidir se um arquivo e binario. Como com diff. Se os arquivos de entrada contiverem alguns bytes nao-texto, mas caso contrario sao como arquivos de texto, voce pode forcar o diff3 a considerar todos os arquivos como arquivos de texto e compara-los linha a linha usando - a ou --text options. git-diff - files (1) Manual Page O modo ltmodegt, ltmodegt..ltmodegt linha aparece apenas se pelo menos um dos ltmodegt e diferente do resto. Cabecalhos estendidos com informacoes sobre o movimento de conteudo detectado (renomeacoes e deteccao de copia) foram projetados para funcionar com diff de dois lttree-ishgt e nao sao usados ??pelo formato combinado diff. Ele e seguido por duas linhas do arquivo / para o arquivo de cabecalho Semelhante ao cabecalho de duas linhas para o formato de dif unificado tradicional, / dev / null e usado para sinalizar arquivos criados ou excluidos. O formato do cabecalho Chunk e modificado para evitar que as pessoas o alimentem acidentalmente com o patch - p1. O formato de comparacao combinado foi criado para a revisao de alteracoes de confirmacao de mesclagem e nao era para ser aplicado. A alteracao e semelhante a alteracao no cabecalho de indice estendido: Existem (numero de pais 1) caracteres no cabecalho de bloco para o formato combinado diff. Ao contrario do formato de dif unificado tradicional, que mostra dois arquivos A e B com uma unica coluna que tem - (menos 820182128201aparece em A, mas removido em B), (plus820182128201missing em A mas adicionado a B), ou (space820182128201unchanged) prefixo, este formato compara Dois ou mais arquivos file1, file2,8230 com um arquivo X, e mostra como X difere de cada um de fileN. Uma coluna para cada um de fileN e prepended para a linha de saida para observar como linha X8217s e diferente dele. Um caractere na coluna N significa que a linha aparece em fileN mas nao aparece no resultado. Um caractere na coluna N significa que a linha aparece no resultado e fileN nao tem essa linha (em outras palavras, a linha foi adicionada, do ponto de vista desse pai). Na saida do exemplo acima, a assinatura da funcao foi alterada de ambos os arquivos (dai duas - remocoes de arquivo1 e arquivo2, mais para significar uma linha que foi adicionada nao aparece em arquivo1 ou arquivo2). Tambem outras oito linhas sao as mesmas do arquivo1, mas nao aparecem no arquivo2 (daqui prefixado com). Quando mostrado por git diff-tree - c. Ele compara os pais de um commit de mesclagem com o resultado de mesclagem (ou seja, file1..fileN sao os pais). Quando mostrado por git diff-files - c. Ele compara os dois pais de mesclagem nao resolvidos com o arquivo de arvore de trabalho (ou seja, o arquivo 1 e o estagio 2 aka nossa versao, o arquivo2 e o estagio 3, aka sua versao). Outros formatos diff A opcao --summary descreve arquivos recem-adicionados, excluidos, renomeados e copiados. A opcao --stat adiciona o grafico diffstat (1) a saida. Essas opcoes podem ser combinadas com outras opcoes, como - p. E destinam-se ao consumo humano. Ao mostrar uma alteracao que envolve um renomear ou uma copia, a saida --stat formata os nomes de caminho de forma compacta, combinando prefixo comum e sufixo dos nomes de caminho. Por exemplo, uma alteracao que move o arch / i386 / Makefile para arch / x86 / Makefile enquanto modifica 4 linhas sera mostrada assim: A opcao --numstat fornece as informacoes diffstat (1), mas foi projetada para um consumo mais facil da maquina. Uma entrada na saida --numstat tem esta aparencia: