Jadi saya pikir itu mungkin ada hubungannya dengan textmate, tetapi kami bekerja dalam tim kecil dan mengalami beberapa masalah dengan konflik file lengkap dari file yang hampir identik di git karena setiap baris dari satu cabang memiliki ^ M yang ditambahkan padanya.
Apa yang ^M
harus dilakukan oleh karakter misterius ini , dan dari mana asalnya?
Pengembang kami menggunakan emacs pada Windows / Mac, TextMate pada Mac, coda pada Mac, dan kadang-kadang editor teks wp-admin.
Adakah yang pernah mengalami masalah ini berasal dari salah satunya?
Jawaban:
Di git-config , setel
core.autocrlf
untuktrue
membuat git secara otomatis mengonversi ujung jalur dengan benar untuk platform Anda, mis. Jalankan perintah ini untuk pengaturan global:sumber
Seseorang tidak mengonversi karakter akhir baris dengan benar .
Saya menganggap itu adalah rakyat Windows karena mereka menyukai CRLF mereka. Unix mencintai LF dan Mac menyukai CR sampai ditunjukkan cara Unix.
sumber
^M
adalah0x0d
, yaitu karakter carriage return. Jika tampilan Anda terlihat sepertimaka file tersebut harus berasal dari Windows karena urutan baris baru standar pada Windows adalah
CR
LF
(0x0d 0x0a
) sedangkan urutan baris baru standar hanya terdiri dariLF
pada Unices.Jika file tersebut berasal dari sistem Mac OS 9 atau sebelumnya, Anda akan melihatnya sebagai
karena tidak akan ada feed garis setelah carriage kembali.
sumber
Untuk membuat ^ M menghilang di git, ketik:
Kredit: https://lostechies.com/keithdahlby/2011/04/06/windows-git-tip-hide-carriage-return-in-diff/
sumber
git diff
masih mempertimbangkan ^ M saat membandingkan file. Hapus pengaturan ini dengangit config --global --unset core.whitespace
(dari utas ini ).--global
untuk hanya mengkonfigurasi repo saat ini.Mereka harus melakukan dengan perbedaan antara ujung garis gaya DOS dan gaya Unix. Lihatlah artikel Wikipedia . Anda mungkin dapat menemukan alat dos2unix untuk membantu, atau cukup menulis skrip kecil untuk memperbaikinya sendiri.
Sunting : Saya menemukan kode sampel Python berikut di sini :
sumber
Saya menggunakan Android Studio (JetBrains IntelliJ IDEA ) di Mac OS dan masalah saya adalah bahwa ^ M mulai muncul di beberapa file dalam permintaan tarik saya di GitHub . Apa yang berhasil bagi saya adalah mengubah pemisah baris untuk file.
Buka file yang diinginkan dalam editor, buka File, pergi ke Line Separators kemudian pilih opsi terbaik untuk Anda (bagi saya itu adalah LF - Unix dan OS X (\ n) )
Menurut artikel berikutnya, masalah ini adalah akibat dari ujung garis yang membingungkan antara sistem operasi: http://jonathonstaff.com/blog/issues-with-line-endings/
Dan informasi lebih lanjut dapat Anda temukan di sini: https://www.jetbrains.com/help/idea/configuring-line-separators.html#d84378e48
sumber
alih-alih ganti permintaan, Anda juga dapat menggunakan Mx delete-trailing-whitespace
sumber
~/.emacs
Masukkan yang berikut ini di (atau eqiuvalent) Andadan kemudian Anda akan dapat menggunakannya
M-x dos2unix
.sumber
^M
pada akhir baris di Emacs menunjukkan carriage return (\ r) diikuti oleh umpan baris (\ n). Anda akan sering melihat ini jika satu orang mengedit file di Windows (di mana ujung baris adalah kombinasi carriage return dan karakter baris baru) dan Anda mengedit di Unix atau Linux (di mana ujung baris hanya karakter baris baru).Kombinasi karakter biasanya tidak berbahaya. Jika Anda menggunakan kontrol sumber, Anda mungkin dapat mengonfigurasi format checkin file teks sehingga garis disesuaikan secara ajaib untuk Anda. Sebagai alternatif, Anda mungkin dapat menggunakan checkin dan checkout trigger yang secara otomatis akan "memperbaiki" file untuk Anda. Atau, Anda mungkin hanya menggunakan alat seperti dos2unix untuk menyesuaikan hal-hal secara manual.
sumber
Seperti semua orang telah sebutkan. Ini gaya garis akhir yang berbeda. MacOSX menggunakan ujung garis Unix - yaitu LF (umpan baris).
Windows menggunakan CR (carriage return) & LF (feed line) sebagai akhir baris. Karena Anda menggunakan kedua windows dan mac di situlah masalah berasal.
Jika Anda membuat file di windows dan kemudian membawanya ke mac Anda mungkin melihat karakter ^ M ini di akhir baris.
Jika Anda ingin menghapusnya, Anda dapat melakukannya dengan sangat mudah di emacs. Cukup sorot dan salin karakter ^ M dan lakukan permintaan-ganti ^ M dengan dan Anda selesai.
EDIT: Beberapa tautan lain yang mungkin bisa membantu. http://xahlee.org/emacs/emacs_adv_tips.html
Yang ini membantu Anda mengkonfigurasi emacs untuk menggunakan tipe gaya akhiran tertentu. http://www.emacswiki.org/emacs/EndOfLineTips
sumber
Saya mengalami masalah ini beberapa waktu lalu. ^ M mewakili Pengembalian Gerbong, dan mencari di
Ctrl-Q Ctrl-M
(Ini membuat ^ M harfiah) akan memungkinkan Anda mendapatkan pegangan pada karakter ini dalam Emacs. Saya melakukan sesuatu seperti ini:sumber
Jika Anda tidak memiliki utilitas dos2unix yang terinstal di sistem Anda, Anda dapat membuatnya sendiri untuk menghilangkan karakter endline Windows:
dengan konten berikut
Di ~ / .bashrc Anda, tambahkan baris:
Menerapkan
akan menghapus ^ M karakter pada baris yang berakhir di file_from_PC.txt. Anda dapat memeriksa apakah Anda memilikinya atau tidak dengan menggunakan cat:
sumber
Lihat juga:
Menyembunyikan ^ M di emacs
Hati-hati jika Anda memilih untuk menghapus karakter ^ M dan mengirim kembali ke tim Anda. Mereka mungkin melihat file tanpa carriage return sesudahnya.
sumber
Solusi bagi saya adalah dengan menggunakan fungsi elisp berikut yang ditemukan dalam Artikel Wiki Emacs ini .
Jalankan fungsi
M-x dos2unix
pada buffer dan simpan file, semua^M
akan hilang.sumber