だから私はそれがテキストメイトに関係していると思うかもしれませんが、私たちは小さなチームで働いており、1つのブランチの各行に^ Mが追加されているため、git内のほぼ同一のファイルのフルファイル競合に関する問題を抱えています。
この神秘的な^M
キャラクターは何をすることになっていて、どこから来たのでしょうか?
開発者は、Windows/Macでemacs、MacでTextMate、Macでcoda、そして時々wp-adminテキストエディターを使用します。
これらのいずれかに起因するこの問題を抱えている人はいますか?
彼らは彼らのCRLFを愛しているので、それはWindowsの人々だと思います。 UnixはLFを愛し、MacはCRを愛し、Unixの方法が示されました。
git-config で、core.autocrlf
をtrue
に設定して、gitがプラットフォームの行末を自動的に正しく変換するようにします。グローバル設定のためにこのコマンドを実行します:
git config --global core.autocrlf true
^M
は0x0d
、つまり復帰文字です。ディスプレイが次のように見える場合
行1 ^ M 行2 ^ M
windowsの標準改行シーケンスはCR
LF
(0x0d 0x0a
)であるのに対して、ファイルはWindowsから来ている必要がありますが、標準改行シーケンスはUnicesのLF
のみで構成されています。
ファイルがMac OS 9以前のシステムからのものである場合、次のように表示されます。
line 1 ^ Mline 2 ^ M
キャリッジリターンの後に改行がないためです。
Gitで^ Mを非表示にするには、次のように入力します。
git config --global core.whitespace cr-at-eol
クレジット: https://lostechies.com/keithdahlby/2011/04/06/windows-git-tip-hide-carriage-return-in-diff/
DOSスタイルの行末とUnixスタイルの違いに関係しています。 Wikipediaの記事 をご覧ください。役立つdos2unixツールを見つけることも、簡単に自分で修正する小さなスクリプトを作成することもできます。
Edit:次のPythonサンプルコードを見つけました here :
string.replace( str, '\r', '' )
query-replaceの代わりに、M-x delete-trailing-whitespaceも使用できます
Android Studio(JetBrains IntelliJ IDEA)をMac OSで使用していますが、私の問題は^ MがGitHubでのプルリクエスト。私のために働いたのは、ファイルの行区切り文字を変更することでした。
エディターで目的のファイルを開くに移動ファイルに移動行区切り記号その後最適なオプションを選択(私にとってはLF-UnixおよびOS X(\ n))
次の記事によると、この問題はオペレーティングシステム間の行末の混乱の結果です。 http://jonathonstaff.com/blog/issues-with-line-endings/
そして、あなたがここで見つけることができるより多くの情報: https://www.jetbrains.com/help/idea/configuring-line-separators.html#d84378e48
以下を~/.emacs
(またはeqiuvalent)にポットします
(defun dos2unix ()
"Replace DOS eolns CR LF with Unix eolns CR"
(interactive)
(goto-char (point-min))
(while (search-forward "\r" nil t) (replace-match "")))
そして、あなたは単純にM-x dos2unix
を使用することができます。
Emacsの行末の^M
は、キャリッジリターン(\ r)とそれに続く改行(\ n)を示しています。誰かがWindows(行末は復帰と改行文字の組み合わせ)でファイルを編集し、UnixまたはLinux(行末は改行文字のみ)で編集すると、これがよく表示されます。
通常、文字の組み合わせは有害ではありません。ソース管理を使用している場合は、テキストファイルのチェックイン形式を構成して、行を魔法のように調整できる場合があります。または、ファイルを自動的に「修正」するチェックインおよびチェックアウトトリガーを使用できる場合があります。または、 dos2unix のようなツールを使用して、手動で調整することもできます。
みんなが言ったように。異なる行末スタイルです。 MacOSXはUnixの行末記号を使用します-LF(改行)。
WindowsはCR(キャリッジリターン)とLF(改行)の両方を行末として使用します。 WindowsとMacの両方を使用しているため、問題の原因はそこにあります。
Windowsでファイルを作成し、それをMacに持ってくると、行の最後にこれらの^ M文字が表示される場合があります。
それらを削除したい場合は、emacsで非常に簡単に行うことができます。 ^ M文字を強調表示してコピーし、^ Mでクエリ置換を行うだけで完了です。
編集:助けになるかもしれないいくつかの他のリンク。 http://xahlee.org/emacs/emacs_adv_tips.html
これは、特定のタイプの行末スタイルを使用するようにemacsを構成するのに役立ちます。 http://www.emacswiki.org/emacs/EndOfLineTips
私はしばらく前にこの問題に遭遇しました。 ^ Mはキャリッジリターンを表し、Ctrl-Q Ctrl-M
(これはリテラル^ Mを作成します)を検索すると、Emacs内でこの文字のハンドルを取得できます。私はこれらの線に沿って何かをしました:
M-x replace-string [ENTER] C-q C-m [ENTER] \n [ENTER]
システムにdos2unixユーティリティがインストールされていない場合は、独自に作成してWindowsエンドライン文字を削除できます。
vi ~/dos2unix.bash:
次の内容で
#!/bin/bash
tr -d '\r' < $1 > repl.tmp
mv -f repl.tmp $1
〜/ .bashrcに次の行を追加します。
alias 'dos2unix=~/dos2unix.bash'
申請中
dos2unix file_from_PC.txt
file_from_PC.txtの行末の^ M文字を削除します。 catを使用して、それらがあるかどうかを確認できます。
cat -v file_from_PC.txt
私にとっての解決策は、この Emacs Wiki Article にある次のelisp関数を使用することでした。
(defun dos2unix ()
"Not exactly but it's easier to remember"
(interactive)
(set-buffer-file-coding-system 'unix 't) )
バッファでM-x dos2unix
関数を実行してファイルを保存すると、すべての^M
が消えます。