CRLF vs. LF ee Daaqadaha: Beddeli, habayn, oo iska ilaali mashaakilaadka mashruuca

Cusbooneysiintii ugu dambeysay: 04/09/2025
Author: Isaac
  • LFUnixiyo CRLF (Windows) waa xariiqo kala duwan; halbeeg u yeelo si aad uga fogaato khilaafyada iyo khaladaadka.
  • Git wuxuu ku xalliyaa dhibaatada xudunta u ah.autocrlf iyo .gitattributes; waxa ay isticmaashaa * text=auto and point laws.
  • Habee tafatiraha (VS Code/Visual Studio) oo, haddii loo baahdo, ku beddel git add --dib-u-habayn .
  • Ku hay LF kaydka oo u oggolow Windows inay isticmaasho CRLF nuqulka shaqada marka ay habboon tahay.

U beddelo qaababka jebinta laynka ee Windows

Haddii aad ka shaqeyso Windows oo aad mashaariic kala duwan kula jirto dadka ka socda Linux ama macOS, hadhow ama hadhowba waxaad galaysaa dagaalka weligeed ah CRLF vs LF. Mararka qaarkood waxay u egtahay sixir madow: waxaad tafatireysaa fayl, ha beddelin wax "muuqda," Git wuxuu calaamadeeyay kala bar faylka sida wax laga beddelay. Ha ka welwelin, maaha sixir; waa ka dhamaadka line ku ciyaaraya adiga.

Si aad naftaada u badbaadiso madax-xanuun, waxay kaa caawinaysaa inaad fahanto waxa hoosta ku jira iyo sida loo hagaajiyo Git, tifaftirayaashaada iyo qalabkaaga si fayl kastaa u yimaaddo "nadiif" kaydka, iyada oo aan isbeddelin fantastik ah ama khaladaad qariib ah oo ku jira CI/CD ama qoraallada. Tilmaan-bixiyahan waxaan kuugu sheegayaa, si faahfaahsan iyo barta, sida loo beddelo, loo habeeyo iyo caadi ka dhig CRLF iyo LF Daaqadaha adigoon lumin el tiempo.

Maxay yihiin LF iyo CRLF maxayse muhiim u yihiin?

Dhamaadka sadarku waa xarfo kontorool oo xaddidaya xariiq kasta oo ku jira faylka qoraalka: LF (\n, ASCII 10) y CRLF (\r\n, ASCII 13+10). Nidaamyada Unix-sida (Linux, macOS) ayaa loo isticmaalaa LF, halka Windows uu isticmaalo CRLF laga dhaxlay madbacadaha iyo kuwa wax qora: marka hore soo celinta gaadhiga (CR), ka dibna line feed (LF).

Doorashadu maaha bilicsanaan: ka beddelashada qaab qaab kale waxay keeni kartaa kala duwanaansho macmal ah, qoraallada ku guuldareysta "amarka aan la helin," dhuumaha shil markay socdaan faylasha lagu keydiyay CRLF ee Linux, ama tifaftirayaasha soo bandhigaya wax kasta oo ku yaal hal xariiq. Haa, waxaad ku furtay .sh CRLF gudaha Bash iyo waxaad heli kartaa cabsi wanaagsan.

Si wax loo dhammeeyo, Unicode waxay aqoonsanaysaa kala-soocayaal badan (NEL U+0085, LS U+2028, PS U+2029, VT U+000B, FF U+000C), laakiin horumarka maalinlaha ah ee dhabta ahi waa CRLF vs LF. Weli, ogaanshaha inay jiraan waxay ku caawinaysaa markaad la kulanto qoraallada jumladaha waaweyn ama faylal qariib ah oo tafatirihii hore aanu si fiican u fasirin.

Xiiso farsamo oo kale oo faa'iido leh: boodboodka waxaa loola dhaqmi karaa sida gooni goosad (khadadka u dhexeeya) ama sida terminator (waxay calaamadeysaa dhamaadka). Daahsoonaantaas ayaa sharraxaysa sababta aad mararka qaarkood u aragto "no-break-end" xariiqda ugu dambeysa ama khadadka madhan oo dheeraad ah markaad isku darto qalabka. Haddii aad u baahan tahay inaad barato sida loo sameeyo hel oo beddel cutubyada nasashada, taxaddar, sababtoo ah falanqeeyayaasha qaarkood waxay filayaan hal shay ama mid kale.

CRLF iyo LF waxay ku kala duwan yihiin nidaamka hawlgalka

Kala duwanaanshaha nidaamka iyo dhibaatooyinka caadiga ah

Daaqadaha, waxa caadiga ah waa CRLF; Linux iyo macOS, LF. Isku dhacan ayaa isla markiiba laga dareemi karaa koox isku dhafan: qof ayaa wax ka beddela faylka nidaamkooda, kaydiya, kala duwanaanshuhuna waxa ka buuxa isbeddello dhab ahaantii dhacay. dhamaadka line kaliyaHeer wax ku ool ah, waxay adkeynaysaa hubintaada waxayna wasakhaysaa taariikhdaada.

Waxa kale oo jira waxyeellooyin: a script iyada oo CRLF ay ku socoto jawi Unix waxay ku fashilmi kartaa khaladaad qarsoodi ah, ama CI-da hawl-qabadku wuu jebiyaa sababtoo ah qolof ayaa si khaldan u fasirta soo noqoshada. Taa beddelkeeda, ku furista faylka kaliya ee LF ee tifaftirayaasha da'da weyn ee Windows way awoodaan u simi xariiq.

Ka digtoonow aaladaha isdhexgalka joogtada ah sida Jenkins ama GitHub Actions: haddii dhismuhu ku socdo Linux laakiin aad geliso faylal leh dhamaadka xariiqda aan iswaafaqsanayn, waad awoodaa. dhuumaha jebiya Inkasta oo "wax walbaa ay ku shaqeeyaan mashiinkayga." In ka badan hal qof ayaa saacado ka lumay arrintan awgeed.

Warka fiicani waa in uu jiro hab cad: deji heshiis oo samee. Qalabku keligiis ayuu adeegsadaa. Taasi waxay ku dhacdaa iyada oo loo marayo Git iyo tafatirahaaga. Oo haddii dhaawac hore loo sameeyey, by dib u habeyn repo.

  Si otomaatig ah ugu samee Maareynta Daaqadaha oo leh Isku-xidhka Gobolka La Rabo (DSC)

Jid ahaan, tifaftirayaasha casriga ah sida VS Code waxay muujinayaan nooca boodada ee barta heerka waxayna kuu oggolaanayaan inaad beddesho duulista; waa naf-badbaadiye marka aad aragto faylasha "iskutallaabta" oo aad rabto si degdeg ah wax u hagaajiya, ama marka aad u baahan tahay iska ilaali nasashada bogga iyo qaabaynta lama filaanka ah marka qoraalka lagu dhejiyo dukumentiyada.

U habeyn Git ee CRLF iyo LF

Git iyo dhamaadka xariiqda: core.autocrlf iyo .gitattributes

Git wuxuu si toos ah u rogi karaa dhamaadka khadka si uu taariikhdaada u nadiifiyo ugana fogaado wax kasta oo la yaab leh. Furaha ayaa ah ikhtiyaarka core.autocrlf, oo ay tahay inaad si fiican u fahanto ka hor intaanad taaban, ogowna in qaabayntu ay noqon karto heerka caalamka o maxaliga ah laga bilaabo kaydka (xeerarka maxalliga ah).

Ku hubi dejimahaaga caalamiga ah -caalami Xusuusnow in repo uu lahaan karo qiime ka duwan kan ka sarreeya. Si aad u aragto wax walba si caalami ah, isticmaal git config –list –globalHaddii aad ku aragto dhaqan qariib ah repo, hubi qiimaha deegaanka iyo kala horraysii iyadoo ku xiran waxaad u baahan tahay.

Qaababka Core.autocrlf ee ereyada la taaban karo (Windows vs Unix): run u beddela CRLF marka la hubinayo oo dib ugu noqda LF markii uu ballan qaaday; aqbasho Kaliya u beddel LF go'an (ku weyn Linux / macOS); been ah waxba ma taaban (oo inta badan waa xal degdeg ah haddii ay jirto koox isku dhafan). Gudaha Windows, waxa ugu macquulsan ee la sameeyo waa run haddii aadan rabin wax lala yaabo.

Amarada faa'iido u leh hagaajinta iyo nadiifinta xaaladdaada repo adoon aad u khaldin: haddii aad rabto in kaydku isticmaalo qiimaha caalamiga ah, saaro furaha deegaanka; haddii aad door bidayso inaad ku qasbiso qiimaha kaydkaas, dhig la'aanteed -caalamiSi loo hagaajiyo faylalka isku qasan, dib u habayn oo samee isbeddelada xariiqda dhammeeya.

git config --list --global
# Ver el valor global efectivo

git config --unset core.autocrlf
# Quitar el valor local y heredar el global

git config core.autocrlf true
# Fijar el valor solo en el repo actual (Windows)

git add --renormalize .
# Recorrerá el repo y homogeneizará line endings según la config

git commit -m 'Homogeneizados los cambios de línea'
# Sube un solo commit de normalización

Laakiin waxaa jira wax ka sii fiican: a .gitattributes xididka ku socdaala koodka. Iyadoo xeerka * text=si toos ah waxaad u sheegtaa Git si uu u ogaado faylalka qoraalka ah oo uu u maareeyo jebinta khadka si waafaqsan (LF in the repo; CRLF gudaha nuqulka shaqada ee Windows haddii ay khuseyso). Oo waxaad hagaajin kartaa kordhinta, tusaale ahaan, ku qasbi Git inuu u maareeyo khadadka cusub si waafaqsan. .sln ee Visual Studio si uu u ahaado sida CRLF had iyo jeer.

* text=auto
# Homogeneiza automáticamente (LF en el repo)

*.sln text eol=crlf
# Asegura CRLF en soluciones de Visual Studio

Markaad soo bandhigto .gitattributes repo hore u nool, ha ilaawin inaad git add -hagaajin . iyo kooxaynta ballan-qaadka. Sidan, waxaad ka fogaataa wax ku biiriye kasta oo soo saaraya "guddiga nadiifinta mega-commit." Waa mid ka mid ah hawlaha aad mar qabato iyo dhibkaaga ayay kaa qaadaysaa inta lagu guda jiro sano.

Habee tafatiraha: Code VS, EditorConfig, iyo Visual Studio

Tafatirahaagu sidoo kale wax badan buu sawiraa. Gudaha VS Code Waxaad dejin kartaa jebinta xariiqda heerka barta ama ikhtiyaarka files.eolHaddii mashruucaagu isticmaalo LF, dooro waana taas; tifaftiruhu wuxuu u kaydin doonaa habkaas adiga oo aan u baahnayn inaad fayl gashato. Way degdegaysaa waxayna kaa badbaadinaysaa kala duwanaanshiyaha buuqa badan.

Haddii qof kasta oo kooxda ka tirsan uu isticmaalo tafatire kale, ku dar EditorConfig (.editorconfig) xididku waa godsend: waxay qeexaysaa xeerarka sida dhamaadka xariiqda, codaynta, iyo meelaha bannaan/tabaha si joogto ah. Inta badan tifaftirayaasha casriga ahi way ixtiraamaan, waxayna si cajiib ah ula midoobaan Git iyo CI.

  Sida Loogu Isticmaalo Tafatirka Cusub ee Daaqadaha: Buuxsan, Hage Waxqabad

Kuwa isticmaala Studio Visual, waxa jira guddi gaar ah oo lagu kaydiyo oo leh codayn gaar ah iyo khadka jaban (Advanced Save Options). Waxaad gali kartaa File> Keydi sida socodka> Keydi hoos u dhaca> Ku kaydi codaynta, iyo waliba meel Doorashooyinka kaydinta horumarsan si toos ah liiska Faylka si aad si degdeg ah u gasho.

  1. Furan Qalabka > Habbee.
  2. Gudaha Amaradadooro Barxada oo xulo Diiwaanka.
  3. Guji amar ku dar, qaybta Diiwaanka, oo ku daray Doorashooyinka kaydinta horumarsan.
  4. Dib u dhig Soodeji/soo dejiso oo xidho. Waad diyaarisay

Visual Studio, waxa kale oo aad la kulmi kartaa faylal leh kala-soociyaal kale (NEL, LS, PS). IDE-ga isku day inaad caadi ka dhigato Marka ay ogaato khilaafyada, waxay ku weydiin doontaa tilmaamo. Haysashada .gitattributes iyo kaydinta xulashooyinka si sax ah waxay ka hortagtaa mashruucaaga inuu ku milmo "xaalad qalaad."

Wixii ka dambeeya CRLF iyo LF: NEL, LS, PS iyo shirkad

Unicode waxay u tixgelisaa dhibco kood oo dheeraad ah sida dhamaadka xariiqda: NEL (U+0085), LS (U+2028) y PS (U+2029)marka lagu daro VT (U+000B) y FF (U+000C). Kuma badna mashaariicda app/web, laakiin way ka soo muuqdaan Qaab-dhismeedka guud ee IBM (EBCDIC) iyo dukumeentiyada qaarkood oo lagu farsameeyay qalab ka da'weyn ama niche.

La jaanqaadka, Unicode waxa ay ku celisaa kontarooladii hore ee ASCII oo leh qiime isku mid ah (CR iyo LF), oo waxa ay ku daraa kuwa cusub beddelka khasaare la'aanta ee u dhexeeya codaynta (tusaale, khariidaynta). EBCDIC NL Unicode NEL). Haddii aad hesho fayl "qaraani", tafatiraha casriga ah ayaa badanaa tusi doona ama ku weydiin doona caadi yeelo.

Dabeecad description Unicode
CR LF Soo noqo + hore u socod U+000D + U+000A
LF Khadka quudinta U+000A
IN THE Safka xiga U + 0085
LS Kala soocida khadka U + 2028
PS Baaragaraaf kala soocida U + 2029

Noocyadii hore ee Windows Notepad xitaa ma aha LF Si fiican ayay u muuqatay; maanta taageerada aad ayey u wanaagsan tahay, laakiin NEL wali waa dhib ka taagan tahay deegaanka qaarkood. Sidaa darteed, dib-u-celinta iyo CI, wax walba ku hay LF ee ku taal repo iyo ka tagista Git/tifaftirayaasha CRLF ee nuqulka shaqada ee Windows waa tallaabada guusha.

Luuqadaha barnaamijka iyo xariiqda jebinta (\r, \n, iyo dabinada)

Xadhkaha qoraalka, luuqado badan ayaa u oggolaanaya baxsasho taxane ah: \n = LF, \r = CR. Tan, waxaad u diyaarisay CRLF sida \r\n marka loo baahdo, ama geli "nadiif" LF leh \n. Laakin ka digtoonow, sababtoo ah dhammaan wakhtiyada runtimes ma wada dhaqmaan si isku mid ah.

Kiisaska maskaxda lagu hayo: in Java, marka lagu daro \r iyo \n, waxaad haysataa %n (qaabeeya) iyo System.lineSeparator() si loo helo jebinta khadka nidaamka hab la qaadan karo; gudaha C#, Deegaanka.New Line sidaas oo kale sameeya; gudaha PHP waxaa jira PHP_EOL; in Python, os.lineep. Haddii aad rabto inaad daabacdo si waafaqsan madal, isticmaal kuwa joogtada ah halkii aad ka isticmaali lahayd guurso CRLF.

daryeel gaar ah leh C iyo C ++: Habka qoraalka, isku xigxiga \n waxaa lagu jaangooyi karaa nidaamka xariiqda jebinta (Windows, CRLF) CRCRLFHabka binary, shayku waa macno. Daahsoonaanshahan ayaa dad badan ka dhigaa inay waardiye ka yihiin marka la ururinayo Windows iyo tijaabinta Linux.

En JavaScript/TypeScript, \n inta badan waa ku filan isticmaalka badankiisa, laakiin haddii aad ka habaynayso gelinta isticmaalayaasha Windows waxaad arki doontaa \r\n waxaadna u baahan doontaa inaad caadi ka dhigto markaad jebinayso khadadka. Sidoo kale, markaad abuurto HTML qaabka ugu dambeeya ayaa lagu xakameynayaa tags (p., br, p, h2…), ma aha jilayaasha \r ama \n.

// C#
var s1 = "Primera\nSegunda";            // LF explícito
var s2 = "Primera" + Environment.NewLine + "Segunda"; // Salto del sistema

// Java
String a = "Uno\r\nDos";                 // CRLF explícito
String b = "Uno" + System.lineSeparator() + "Dos";    // Portátil

// Python
s = 'Linea1' + os.linesep + 'Linea2'

// JavaScript
const t = 'L1\nL2'; // Normaliza entrada si viene con \r\n

Haddii aad abuurto taraafikada shabakada, xusuusnow borotokoolladaas sida HTTP, SMTP, FTP ama IRC waa dhammaatay: ciwaanada iyo khadadka xakamaynta badan ayaa la socda CRLF Haa ama haa. Maya "hal-abuuro": ku hagaaji wax soo saarka RFC ama waxaad heli doontaa adeegayaal kuwaas diid codsiyada.

  Sida loogu sugo Windows ilaaliyaha aqoonsiga, BitLocker, AppLocker, Guard Device, iyo WDAC

Sida si la isku hallayn karo loo ogaado oo loogu beddelo dhammaadka khadka

Ma jiro "BOM" oo kuu sheegaya nooca xariiqda jebinta faylka: waa inaad bal eeg baytyadaFicil ahaan, qalabku waxa ay tiriyaan CR (0x0D) iyo LF (0x0A) oo eeg hannaankooda: haddii ay u muuqdaan kuwo lammaane ah, badanaa waa CRLF; haddii kaliya 0x0A u muuqato, waa LF; haddii uu jiro isku-dhafka aan is-waafaqayn, waxaad leedahay a hodgepodge taas waa in la hagaajiyaa.

Tifaftirayaasha qaar baa tan ogaadaan oo ku ogeysiiya; VS Code wuxuu ku soo bandhigayaa barta heerka; Visual Studio ayaa laga yaabaa inuu bixiyo si caadi looga dhigo. Gudaha Git, talaabada badbaadada leh waa in la qeexo .gitattributes iyo, haddii ay habboon tahay, dib u habeyn si aad geedka oo dhan ula jaanqaaddo siyaasadda. Kaydkaaga (iyo dib u habeyntaada) ayaa kaaga mahadcelin doonta.

Maxaa dhacaya haddii aad ku shaqeyso "qaabab qalaad"? Tifaftirayaasha sida Notepad++ iyo VS Code waxay si fiican u maareeyaan CRLF iyo LF, oo badiyaa aqoonsada LS/PS. Kiisaska NEL iyo EBCDIC, mararka qaarkood waa inaad martaa a beddelaad hore ee codeynta marka lagu daro jebinta khadka.

Istaraatiijiyada guuleysiga ee mashaariicda intooda badan waa mid fudud: ku badbaadi repo oo leh LF, waxay awood u si toos ah ugu beddelashada Windows, iyo xannibaadyada marmarka qaarkood ka reeban eol=crlf faylasha u baahan (tusaale, .sln). Inta kale waa cabsi la iska ilaalin karo.

Repos oo leh jajabyo xariiqo isku dhafan: sida loo hagaajiyo khariidadda

Waa wax iska caadi ah: qaybo ka mid ah koodka ayaa ka yimid Linux (LF) iyo kuwo kale ayaa wax laga beddelay Windows (CRLF). Natiijadu waa geed xarriiqo isku dhafan, kala duwanaansho aan la akhriyi karin, dadkuna is weydiinayaan sababta qoraalkoodu u billaabmi la'yahay maanta. habeeya.

Qorshaha dhakhso leh oo aamin ah:

  1. Kudar .gitattributes con * text=si toos ah iyo xeerar gaar ah haddii loo baahdo (tusaale, *.sln qoraalka eol=crlf).
  2. Orod git add -hagaajin . si uu Git u maro repo oo uu u hagaajiyo jebinta xariiqda si waafaqsan qawaaniinta.
  3. Samee a hal ballan oo leh fariin cad (tusaale, "isbedelka khad isku mid ah").
  4. Kooxda ogeysii oo weydii qaado ka hor inta aan la sii wadin si loo yareeyo khilaafaadka.

Haddii aad haysato qoraallo xasaasi ah (sh, py, iwm.) iska hubi inay ku kaydsan yihiin LF Shebangkuna ma qudhun. Waxaad ku qasbi kartaa qaababka .gitattributes ama dib ugu eeg tifaftirahaaga ka hor intaadan samayn.

Visual Studio, haddii ay ogaato boodboodka aan iswaafaqsanayn, waxay soo jeedin doontaa in caadi laga dhigo. Aqbal, dib u eeg farqiga, oo lasoco ballan-qaadka dib u habeyn hore si wax walba u wareegsan.

Laga bilaabo wakhtigaas, oo leh .gitattributes iyo core.autocrlf si sax ah loo dejiyay, way dhamaadeen "markan waxay soo martay CRLF" balastar. Oo haddii qof ka furo mashruuca Linux ama macOS, wax walbaa sideedii ayay ahaan doonaan sababtoo ah feylasha kaydka waxaa lagu kaydiyaa LF.

Qaababka ay taageerto Microsoft Office iyo marka ay ugu wanaagsan tahay in mid kasta la isticmaalo
Maqaalka laxiriira:
Qaababka Microsoft Office: Waxa ay yihiin iyo goorta la isticmaalayo mid kasta