Apabila menggunakan tortoisegit untuk menghantar projek, LF akan digantikan dengan CRLF dalam...
迷茫
迷茫 2017-05-02 09:49:01
0
2
953

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 falseIa boleh diselesaikan, tetapi ia tidak berfungsi untuk saya. Saya tidak tahu apa masalahnya. Berikut ialah kandungan dalam konfigurasi

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

membalas semua(2)
漂亮男人

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

Sudah tentu, terdapat cara yang lebih baik untuk menyelesaikan masalah pemisah baris yang tidak konsisten - gunakan

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

Fail ini mesti terletak dalam direktori akar gudang dan boleh diubah suai dan diserahkan seperti fail lain. Begini cara menulis fail ini:

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

为情所困

Anda melakukannya sebaliknya, ia harus ditetapkan kepada benar.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan