Rumah > Soal Jawab > teks badan
Semasa menyerahkan projek, sekumpulan amaran muncul: LF akan digantikan dengan CRLF dalam..., dan saya tersekat mengemas kini indeks, saya menyemaknya dalam talian dan mendapati ia adalah satu baris masalah pecah. Penyelesaiannya adalah git config --global core.autocrlf false
Ia boleh diselesaikan, tetapi ia tidak berfungsi untuk saya. Saya tidak tahu apa masalahnya. Berikut ialah kandungan dalam konfigurasi
漂亮男人2017-05-02 09:51:01
Sebelum saya menjawab soalan anda, saya perlu mengatakan beberapa perkataan lagi. Apabila anda bekerjasama dalam pembangunan kod dengan orang lain melalui GitHub atau pelayan pengehosan jauh lain, adalah penting untuk memastikan bahawa pemisah baris dikendalikan dengan betul. Pertama sekali, anda perlu tahu bahawa sistem pengendalian yang berbeza mempunyai takrifan aksara baris baharu yang berbeza Karakter baris baharu dalam sistem pengendalian seperti Unix atau Unix dipanggil LF, manakala aksara baris baharu dalam sistem Windows dipanggil <. 🎜>CRLF Terdapat perbezaan besar antara keduanya:
Dalam sistem Unix, hujung setiap baris hanyalah "<line feed>", iaitu "n"; dalam sistem Windows, hujung setiap baris ialah "<line feed><carriage kembali>"Nota: Dipetik daripada perbezaan antara carriage return (CR) dan suapan talian (LF), 'r' dan 'n'.
Ini adalah punca masalah - iaitu, jika anda menggunakan sistem Windows dan rakan anda menggunakan Mac, apabila anda menggunakan git untuk membangunkan perisian secara kolaboratif, akan ada masalah pemutusan talian yang tidak konsisten.
Git sebenarnya boleh menangani masalah pemutusan baris yang tidak konsisten dengan sendirinya, tetapi ia mungkin menghasilkan keputusan yang tidak dijangka. Oleh itu, adalah perlu untuk membuat tetapan yang berkaitan Secara umumnya, jika anda tidak mahu bersusah payah, anda boleh menggunakan kaedah biasa, seperti yang ditunjukkan di bawah:
$ git config --global core.autocrlf true
Malah, apabila anda memasang versi Windows git atau togoiseGit, anda mungkin telah membuat konfigurasi sedemikian, mungkin anda tidak mengetahuinya pada masa itu, contohnya, sebab mengapa poster menghasilkan amaran sedemikian:
amaran: LF akan digantikan dengan CRLF dalam...Ini kerana anda membuat konfigurasi di atas. Mengenai kenapa ia tersangkut di sana, mungkin kerana terlalu banyak tempat yang perlu diganti Mungkin anda boleh menunggu dengan sabar sebentar. Ngomong-ngomong, jika anda menukar
kepada true
, anda membiarkan git mengendalikannya dengan sendirinya, jadi tiada amaran dilaporkan. Tindakan ini boleh menyebabkan putus talian antara anda dan rakan anda bersatu. false
untuk menyatukan pemisah baris dalam fail. Fail ini agak serupa dengan .gitattributes
Bukan sahaja nama yang serupa, tetapi sintaks penggunaan dan penulisannya juga serupa. .gitignore
Kandungan fail kelihatan seperti jadual, dibahagikan kepada dua lajur: lajur kiri ialah nama fail yang perlu dipadankan oleh git; lajur kanan ialah format baris baharu yang perlu digunakan oleh git. Mari kita lihat buah berangan:
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text
# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
Jika anda biasa dengan , anda akan mendapati lajur kiri fail di atas sangat biasa. Satu-satunya perbezaan ialah fail .gitignore
mempunyai lajur tambahan di sebelah kanan, seperti .gitattributes
, text
, text eol=crlf
Kami hanya mengatakan bahawa lajur ini digunakan untuk menetapkan format pemisah baris yang digunakan oleh yang sepadan fail di sebelah kiri Lajur kiri dan kanan Asingkan dengan ruang. Mari perkenalkan sintaks lajur kanan secara terperinci: binary
text=auto
Biar git mengendalikan format baris baharu yang digunakan oleh fail padanan di sebelah kiri Ini ialah pilihan lalai.
text eol=crlf
Gunakan format baris baharu CRLF secara seragam untuk fail yang sepadan di sebelah kiri Jika LF muncul dalam mana-mana fail, ia akan ditukar kepada CRLF.
text eol=lf
Gunakan format baris baharu LF secara seragam untuk fail yang sepadan di sebelah kiri Jika CRLF muncul dalam mana-mana fail, ia akan ditukar kepada LF.
binary
memberitahu git bahawa ini bukan fail teks dan baris baharu di dalamnya tidak boleh ditukar. Selain itu, binary
dan simbol -text -diff
adalah setara.
Sintaks di atas sepatutnya mencukupi Jika anda berminat, anda boleh menyemak sendiri maklumat yang berkaitan, seperti maklumat rasmi: https://git-scm.com/book/en/v...
Secara umumnya, kaedah kedua adalah penyelesaian terbaik, walaupun ia lebih menyusahkan daripada kaedah pertama.
P.S: Disusun menjadi blog: Git menangani masalah putus talian