cari

Rumah  >  Soal Jawab  >  teks badan

Apabila menggunakan tortoisegit untuk menghantar projek, LF akan digantikan dengan CRLF dalam...

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

迷茫迷茫2767 hari yang lalu941

membalas semua(2)saya akan balas

  • 漂亮男人

    漂亮男人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

    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

    balas
    0
  • 为情所困

    为情所困2017-05-02 09:51:01

    Anda melakukannya sebaliknya, ia harus ditetapkan kepada benar.

    balas
    0
  • Batalbalas