Então, acho que isso pode ter a ver com o companheiro de texto, mas trabalhamos em uma equipe pequena e estamos tendo alguns problemas com conflitos de arquivos completos de arquivos quase idênticos no git porque cada linha de um ramo tem um ^ M anexado a ele.
O que esse ^M
personagem misterioso deveria fazer e de onde poderia estar?
Nossos desenvolvedores usam emacs no Windows / Mac, TextMate no Mac, coda no Mac e, ocasionalmente, o editor de texto wp-admin.
Alguém já teve esse problema decorrente de um desses?
Respostas:
No git-config , configure
core.autocrlf
paratrue
fazer o git converter automaticamente as terminações de linha corretamente para sua plataforma, por exemplo, execute este comando para uma configuração global:fonte
Alguém não está convertendo seus caracteres de final de linha corretamente .
Suponho que seja o pessoal do Windows, pois eles amam seu CRLF. O Unix ama LF e Mac ama CR, até que foi mostrado da maneira Unix.
fonte
^M
é0x0d
, ou seja, o caractere de retorno de carro. Se sua tela parecero arquivo deve ter vindo do Windows porque a sequência de nova linha padrão no Windows é
CR
LF
(0x0d 0x0a
), enquanto a sequência de nova linha padrão consiste apenasLF
no Unices.Se o arquivo fosse de um sistema Mac OS 9 ou anterior, você o veria como
porque não haveria avanço de linha após os retornos de carro.
fonte
Para fazer o ^ M desaparecer no git, digite:
Créditos: https://lostechies.com/keithdahlby/2011/04/06/windows-git-tip-hide-carriage-return-in-diff/
fonte
git diff
ainda leva em consideração o ^ M ao comparar arquivos. Remova essa configuração comgit config --global --unset core.whitespace
( deste tópico ).--global
para apenas configurar o repo atual.Eles têm a ver com a diferença entre as terminações de linha de estilo DOS e o estilo Unix. Confira o artigo da Wikipedia . Você pode encontrar uma ferramenta dos2unix para ajudar, ou simplesmente escrever um pequeno script para corrigi-lo.
Edit : Encontrei o seguinte código de exemplo Python aqui :
fonte
Estou usando o Android Studio (JetBrains IntelliJ IDEA ) no Mac OS e meu problema foi que ^ M começou a aparecer em alguns arquivos na minha solicitação pull no GitHub . O que funcionou para mim foi alterar o separador de linhas de um arquivo.
Abra o arquivo desejado no editor, vá para Arquivo, vá para Separadores de Linha e escolha a melhor opção para você (para mim era LF - Unix e OS X (\ n) )
De acordo com o próximo artigo, esse problema é resultado de finais confusos de linha entre sistemas operacionais: http://jonathonstaff.com/blog/issues-with-line-endings/
E mais informações você pode encontrar aqui: https://www.jetbrains.com/help/idea/configuring-line-separators.html#d84378e48
fonte
em vez de substituir a consulta, você também pode usar o espaço em branco Mx delete-trailing-whitespace
fonte
~/.emacs
Coloque o seguinte em seu (ou eqiuvalent)e então você seria capaz de simplesmente usar
M-x dos2unix
.fonte
^M
no final da linha no Emacs está indicando um retorno de carro (\ r) seguido por um avanço de linha (\ n). Você verá isso frequentemente se uma pessoa editar arquivos no Windows (onde final de linha é a combinação de caracteres de retorno de carro e nova linha) e editar no Unix ou Linux (onde final de linha é apenas um caractere de nova linha).A combinação de caracteres geralmente não é prejudicial. Se você estiver usando o controle de origem, poderá configurar o formato de entrada de arquivo de texto para que as linhas sejam ajustadas magicamente para você. Como alternativa, você poderá usar os gatilhos de check-in e check-out que "corrigirão" automaticamente os arquivos para você. Ou, você pode apenas usar uma ferramenta como dos2unix para ajustar manualmente as coisas.
fonte
Como todo mundo mencionou. É um estilo de final de linha diferente. O MacOSX usa terminações de linha Unix - ou seja, LF (avanço de linha).
O Windows usa CR (retorno de carro) e LF (avanço de linha) como final de linha. Como você está usando o Windows e o Mac, é aí que o problema se origina.
Se você criar um arquivo no Windows e trazê-lo para o Mac, poderá ver esses caracteres ^ M no final das linhas.
Se você deseja removê-los, você pode fazer isso com muita facilidade no emacs. Apenas destaque e copie o caractere ^ M e faça uma substituição de consulta ^ M por e pronto.
EDIT: Alguns outros links que podem ser úteis. http://xahlee.org/emacs/emacs_adv_tips.html
Este ajuda a configurar o emacs para usar um tipo específico de estilo de final de linha. http://www.emacswiki.org/emacs/EndOfLineTips
fonte
Encontrei esse problema há algum tempo. O ^ M representa um retorno de carro e a pesquisa
Ctrl-Q Ctrl-M
(Isso cria um literal ^ M) permitirá que você identifique esse caractere no Emacs. Eu fiz algo nesse sentido:fonte
Se você não possui o utilitário dos2unix instalado no sistema, poderá criar o seu próprio para se livrar dos caracteres de linha de extremidade do Windows:
com o seguinte conteúdo
No seu ~ / .bashrc, adicione a linha:
Aplicando
irá remover ^ M caracteres nas linhas que terminam em file_from_PC.txt. Você pode verificar se os possui ou não usando cat:
fonte
Veja também:
Escondendo ^ M no emacs
Tenha cuidado se optar por remover os caracteres ^ M e reenviar para sua equipe. Eles podem ver um arquivo sem retorno de carro posteriormente.
fonte
A solução para mim foi usar a seguinte função elisp encontrada neste artigo do Emacs Wiki .
Execute a função
M-x dos2unix
no buffer e salve o arquivo, tudo^M
desaparecerá.fonte