Padaryti „Git“ naudodami CRLF susijungimo linijose <<<<<<< HEAD “

Ar Git gali būti paprašyta naudoti CRLF vietoj LF eilutės pabaigoje, kurią jis įterpia į failą?

Jei išsprendžiate konfliktus teksto redaktoriuje be matomų EOL ženklų, lengva netyčia sukelti LF susijungimą, jei jį ištrinate pasirinktinai:

Palikite jus:

Ir dabar du LFs įstrigo į kitą CRLF failą!

Akivaizdu, kad viena iš alternatyvų yra tiesiog rūpintis linijų galais sprendžiant sujungimą, bet maniau, kad paklausiu, ar yra būdas pasakyti Git'ui naudoti CRLF už čia sukurtas linijas.

11
24 июля '13 в 14:25 2013-07-24 14:25 Jamie Humphries paprašė , kad liepos 24 d. 13 d. 14:25 val. 2013-07-24 14:25
šaltinis
@ 3 atsakymai

Ar Git gali būti paprašyta naudoti CRLF vietoj LF eilutės pabaigoje, kurią jis įterpia į failą?

Tai ... galbūt iš 2.7.2+ git (2016 m . Vasario mėn.) .
Ir jums nereikia nieko daryti.

Žr. Įsipareigojimą 15980de , įsipareigokite 86efa21 (2016 m. Sausio 27 d.) Johannes Schindelin ( dscho ) .
(susijungė Junio ​​C Hamano - gitster - įsipareigoti ab2c107 , 2016 m. vasario 17 d.)

merge-file : leiskite, kad konflikto žymekliai atitiktų konteksto eilutės pabaigą

Suderinus failus su CR / LF linijos pabaiga, konfliktų žymekliai turi atitikti juos taip, kad išvesties faile nebūtų mišrių linijų pabaigos .

Tai ypač įdomu „Windows“, kur kai kurie redaktoriai tikrai painiojami su mišriomis linijų galūnėmis.

Pradinė šio pleistro versija iš „Beat Bolli“ buvo gerbiama „ core.eol , o vėlesnis šio kūrėjo tobulinimas taip pat gerbė „ gitattributes .
Šis požiūris buvo neoptimalus, nors: „ git merge-file buvo išrastas kaip pakaitalas GNU sujungimo pakeitimui ir, kaip savaime, neturi jokių problemų dėl išnaudojimo už bet kurios saugyklos!

Dar vieną problemą, susijusią su pradiniu požiūriu, pabrėžė Hamano Junio: pasenusios saugyklos gali perduoti savo tekstinius failus naudodamosi CR / LF linijos galais (tiek core.eol tiek core.eol suteiktų klaidingą įspūdį). Todėl daug geresnis požiūris yra tiesiog suderinti konteksto eilutės galus, jei tokių yra .

Mums nereikia žiūrėti į visą kontekstą:

  • Jei visi LF failai arba visi jų turi CR / LF linijos galus, pakanka pažvelgti tik į vieną eilutę, atitinkančią šį stilių.
  • Ir jei linijų kontūrai vis dar yra sumaišyti, vis dar galite imituoti tik vieną eolio eilutę: mes tiesiog pridedame sumaišytas linijas į krūvą, ir mes negalime nieko daryti.

Taigi, ką mes darome: mes žiūrime į liniją prieš konfliktą, nukritusį atgal į ankstesnę eilutę, jei ji buvo paskutinė eilutė ir neturėjome eilutės pabaigos, grįžta į pirmąją eilutę, pirmiausia pirmajame atvaizde, tada antrą atvaizdą po vaizdo ir pagaliau peržiūros vaizdas.
Jei radome nuoseklią CR / LF (arba netinkamą) linijos pabaigą, mes sutiksime, kad priešingu atveju naudosime tik LF linijų galus konfliktų žymenims.

Atkreipkite dėmesį, kad nors tiesa, kad turi būti bent dvi eilutės, mes galime atrodyti (kitaip nebus konflikto), ta pati situacija netaikoma linijų pabaigoms: trys nagrinėjamos bylos gali būti sudarytos iš vienos eilutės be jokios kiekvienos linijos Šiuo atveju grįšime tik į LF.

10
18 февр. atsakymą pateikė VonC 18 feb. 2016-02-18 10:06 '16 at 10:06 2016-02-18 10:06
šaltinis

Nėra jokio įrenginio, kuris valdytų linijų, naudojamų „<<<<< žymenims gite, galus“, jie yra sunkiai koduoti, kad būtų naudojami '\n' šaltinio kode (žr . Eilutę 173 iš xmerge.c failo ).

Jei nustatysite „ eol “ arba „ core.eol “ į „ crlf “, tuomet „ crlf žymenys turi \r\n eilutės pabaigoje faile (tai įvyksta per tepalo / švaraus filtro žingsnį po kodo virš ), tačiau jis turi didelį šalutinį poveikį: failai bus „normalizuoti“ pakeliui į saugyklą, todėl failai bus ištaisyti su unix linijos pabaiga.

Tai greičiausiai ne tai, ko norite .Net projekte, kaip minėta pavyzdyje.

Taigi, aš neturiu jums gero atsakymo, atsiprašau.

3
24 июля '13 в 18:17 2013-07-24 18:17 atsakymą pateikė Richas liepos 13 d., 13 val., 6:17, 2013-07-24 18:17
šaltinis

Nežinau, ar yra visuotinis būdas tai padaryti, bet galite nustatyti numatytąjį EOL simbolį kiekvienam failo plėtiniui .gitattributes faile (žr. „ Gitattributes“ dokumentų eilutės pabaigos konversijos skyrių.

Pvz., Redaguokite .gitattributes failą git projekto šaknyje, kad jame būtų kažkas panašaus:

 *.cs eol=crlf *.config eol=crlf 
1
24 июля '13 в 15:31 2013-07-24 15:31 atsakymą pateikė Suzanne , liepos 24 d., 13 d., 15:31, 2013-07-24 15:31
šaltinis

Peržiūrėkite kitus klausimus apie „ arba užduokite klausimą