„Git“ sujungia kairę HEAD žymeles mano failuose

Bandžiau sujungti failą komandinėje eilutėje su „Git“, kai pasirodė klaidos pranešimas, rodantis, kad sujungimas buvo nutrauktas.

Maniau, kad tai buvo pabaiga, bet tada supratau, kad mano failuose yra žymių. Pavyzdžiui:

 start = expression validchar = [0-9a-zA-Z_?!+\-=@#$%^ integer = <<<<<<< HEAD digits:[0-9]+ { return digits.join(""); } ======= sign:"-"* digits:[0-9]+ { return sign + digits.join(""); } >>>>>>> gh-pages 

Failus redagavo ne mane, o rodomos eilutės įterpiamos:

  • Eikite po mažiau simbolių ( <<<<<<< HEAD )
  • modifikuotos kodo eilutės
  • lygių ženklų eilutė ( ======= )
  • nauja kodo versija
  • kita eilutė, pradedant nuo simbolių, didesnių už pavadinimo pavadinimą ir pavadinimą ( >>>>>>> gh-pages )

Blogiau yra tai, kad failo turinys nebėra tvarkingas. Ar kas nors žino, kaip sugrąžinsiu šiuos failus, o pakeitimai, kuriuos aš padariau „gh“ filialuose, sujungiami į pagrindinį filialą?

68
18 мая '12 в 20:41 2012-05-18 20:41 apatinis raktas nustatytas gegužės 18 d ., 12 val. 8:41 val. 2012-05-18 20:41
@ 5 atsakymai

Tai yra konfliktų žymenys . Jūs vis dar jungiate, bet buvo keletas dalių, kurių Git negalėjo automatiškai sujungti. Turite rankiniu būdu redaguoti dalis , kad jos būtų, ir tada įrašykite rezultatus.


Pavyzdžiui, jūsų konkrečiu atveju jūs tikriausiai norėsite ją išspręsti taip (pastaba - dešinėje esančios rodyklės / tekstas yra tik mano pastabos, o ne tai, ką įvedate į failą):

 integer = <<<<<<< HEAD <-+ remove the bits here digits:[0-9]+ | { return digits.join(""); } | ======= <-+ sign:"-"* digits:[0-9]+ { return sign + digits.join(""); } >>>>>>> gh-pages <-- and this 

ir tokiu būdu išsaugote failą kaip ...

 integer = sign:"-"* digits:[0-9]+ { return sign + digits.join(""); } 
75
18 мая '12 в 20:44 2012-05-18 20:44 atsakymas duotas Amber gegužės 18 d., 12 val. 20:44 2012-05-18 20:44

Visiškai pradėkite nuo „git status“, kad sužinotumėte, ką turite. Jei nutraukėte sujungimą (arba pasikeitėte sujungimą), o darbo kataloge yra prieštaringų failų, kažkas negerai. „Git“ būsena parodys, kur esate. Po to turite kelias parinktis. Turite įgalinti sujungimo fiksavimą rankiniu būdu, kuris gali būti nelengvas uždavinys, arba naudoti tokį įrankį kaip:

 git mergetool 

Sujungimo įrankis veiks, jei jūsų failai bus nurodyti kaip reikalingi sujungti.

Taip pat galite atlikti vieną iš šių veiksmų:

border=0
 git checkout --ours -- /path/to/conflicted-file # this is probably the one you want git checkout --theirs -- /path/to/conflicted-file 

Naudodami sintaksę galite matyti įvairias versijas: 1: failo pavadinimas. Čia rasite paaiškinimą. Tačiau visa tai reiškia, kad „git status“ rodo failus, reikalingus jungimui.

Galiausiai visada galite:

 git reset --hard # sounds like --hard is what you need but check other options 
19
18 мая '12 в 22:10 2012-05-18 22:10 atsakymą pateikė „ GoZoner“ gegužės 18 d. 12 val. 10:10 2012-05-18 22:10

Visi atsakymai yra teisingi, tačiau jei norite automatiškai pašalinti visus konflikto etiketes ir norite automatiškai pakeisti HEAD saugojimo failus, galite sukurti savo „bash“ scenarijų, pvz .: -

Pavyzdinis scenarijus:

# vim /usr/sbin/solve.git

(pridėti kitą)

 #!/bin/bash for f in $(grep -Rl '^>>>>>>> ' --include="*.php" --include="*.css" --include="*.js" --include="*.html" --include="*.svg" --include="*.txt" .) do sed -i -e '/^=======/,/^>>>>>>> /d' -e '/^<<<<<<< /d' $f sed -i -e '/^>>>>>>> /d' $f echo "$f Fixed" done git add . ; git commit -am "[+] Resolved on `date` from `hostname` by `whoami`" --no-verify 

# chmod 755 /usr/sbin/solve.git

ir tiesiog paleiskite jį savo GIT saugykloje / kelio vietoje, kad galėtumėte:

$ cd <path_to_repo>
$ solve.git

Pastaba - Pirmiau minėti failų plėtiniai yra php, css, js, html, svg ir txt.

1
atsakymas pateikiamas p. 05 мая '16 в 14:13 2016-05-05 14:13 Pundir 05 gegužės 16 d. 14:13 2016-05-05 14:13

Aš einu iš šio klausimo . Ir aš norėjau, kad būtų galima automatizuoti pusiau failų derinimo būdą, o ne rankiniu būdu redaguoti failus (kaip siūloma kituose atsakymuose, kurie man nėra labai patogu). Taigi, ką aš galiausiai dariau per „Netbeans“, bet tai galite padaryti per komandinę eilutę.

Dabar turėkite omenyje, kad jis veikia tik tada, kai iškart po merge->add->commit suprasti, kad jūs viską sugadinote ir norite pakartoti procesą.

1 ŽINGSNIS: Atkurti ankstesnį įvykį.

 git reset --hard a992a93f9312c6fa07c3a1b471c85e9fbf767d0e 

2 ŽINGSNIS: Pabandykite sujungti filialą

 git merge --ff origin/feature/YOUR-Branch_here 

Šiame etape jums bus pasiūlyta sujungti >

0
11 дек. Atsakymą pateikė Mohd Abdul Mujib gruodžio 11 d. 2018-12-11 19:14 '18, 07:14 pm 2018-12-11 19:14

Atom, aš turėjau problemų dėl to, kad kai kurie failai neišsaugojo išspręstų sujungimo konfliktų į diską, todėl turėjau rankiniu būdu spustelėti „išsaugoti“. Man teko šiek tiek laiko suprasti.

0
06 апр. Timaro Ivo Batio atsakymas, pateiktas 06.04 2018-04-06 00:57 '18 prie 0:57 2018-04-06 00:57