„Git“: kaip redaguoti / perrašyti sujungimo pranešimą?

Kaip pakeisti ar perrašyti sujungimo klaidos pranešimą?

git commit --amend veikia, jei tai yra paskutinis git commit --amend ( HEAD ), bet ką daryti, jei jis eina į HEAD ?

git rebase -i HEAD~5 nepateikia sujungimo komandų sąrašo.

98
02 сент. nustatyti ma11hew28 02 sep . 2011-09-02 07:18 '11 at 7:18 am 2011-09-02 07:18
@ 4 atsakymai

Jei į git rebase -i pridėsite --preserve-merges (arba jos sinonimą, -p ), tada git bandys išsaugoti susijungimus perkrauti, o ne linearizuoti istoriją, ir taip pat turėtumėte sugebėti pataisyti susijungimą:

 git rebase -i -p HEAD~5 
133
02 сент. Atsakymas, kurį pateikė Mark Longair 02 Sep. 2011-09-02 07:47 '11 at 7:47 2011-09-02 07:47

Atkreipkite dėmesį, kad git1.7.9.6 (ir git1.7.10 +) pradžia, git merge visada paleidžia patį redaktorių , kad galėtumėte pridėti susijungimo informaciją.

git merge $tag “ sujungti anotuotą žymą visada atidaro redaktorių interaktyvios redagavimo sesijos metu. „V1.7.10“ eilutėse įdiegtas „GIT_MERGE_AUTOEDIT“ aplinkos kintamasis, padedantis seniems scenarijams atmesti šį elgesį, tačiau paslaugos stebėjimas taip pat turėtų jį palaikyti.

Ji taip pat pristato GIT_MERGE_AUTOEDIT aplinkos kintamąjį, kad senieji scenarijai pašalintų šį elgesį.

Žr. „ Laukiama„ Git 1.7.10 “:

border=0

Pastaruoju metu diskusijoje dėl „Git“ adresų sąrašo Linus pripažino (ir sutikau), kad tai buvo viena iš projekto klaidų, padarytų „Git“ istorijos pradžioje.
1.7.10 ir vėlesnėse versijose „Git“ sujungimo komanda, kuri veikia interaktyvioje sesijoje (t. Y. Ir jos standartinė įvestis, ir standartinė išvestis, prijungta prie terminalo), bus sukurta redaktoriui prieš sukuriant fiksavimą, kad būtų įrašytas sujungimo rezultatas, kad leiskite vartotojui paaiškinti susijungimą, lygiai taip pat, kaip Git įsipareigojimo komanda, kurią vartotojas atliko po to, kai buvo išspręstas sujungimo konfliktas.

Linusas sakė:

Bet aš nerūpiu, kaip tai iš tikrųjų veikia, mano pagrindinė problema yra ta, kad „Git“ pernelyg lengva turėti blogus sujungimus.
Manau, kad dalis šio elemento yra dar paprastesnė idiocija: mes net nevykdome numatytojo redaktoriaus „git“ sujungimui, bet mes darome už git commit .
Tai buvo dizaino klaida, o tai reiškia, kad jei norite pridėti pastabą prie sujungimo, turite atlikti papildomą darbą. Todėl žmonės to nedaro .

26
03 апр. atsakymas pateikiamas VonC 03 balandžio. 2012-04-03 08:55 '12 at 8:55 2012-04-03 08:55

Kitas gražus atsakymas naudojant tik primityvias komandas yra knittl ngn-wiki.ru.site/questions/58215 / ... :

 git checkout <sha of merge> git commit --amend # edit message git rebase HEAD previous_branch 

arba geresnė (tikslesnė) galutinio perkrovimo komanda:

 git rebase <sha of merge> previous_branch --onto HEAD 

„BTW“, naudodama primityvias komandas, gali turėti gražią „funkciją“, kad ji nevartotų per daug CPU ir laukia nežinomo laiko, kol „Git“ baigs galvoti apie įsipareigojimų sąrašą, kurį reikia iš naujo nustatyti git rebase -p -i HEAD^^^^ ( tokia komanda, kuri paskatintų paskutinių 4 sąrašo sudarymą, sujungia, nes mano atveju mano paskutinis atvejis buvo apie 50 sekundžių!).

3
01 марта '17 в 18:34 2017-03-01 18:34 atsakymas pateikiamas imz - Ivan Zakharyaschev kovo 1 '17, 18:34 2017-03-01 18:34

git rebase -i HEAD~5 komanda parodys redaktorių. Jame išvardijami nurodyti įsipareigojimai (šiuo atveju penki iš jų). Pirmajame stulpelyje yra kiekvienos įsipareigojimo pick . Tiesiog pakeiskite redagavimo reword šiame redaktoriuje ir išsaugokite + uždarykite redaktorių. Tada git parodys kiekvieno įvykio redaktorių, kur pakeisite pick kad reword , ir galite redaguoti pranešančiojo pranešimo.

0
10 янв. ChrisD atsakymas 10 sausis 2012-01-10 08:24 '12 at 8:24 2012-01-10 08:24

Kiti klausimai apie žymų arba Užduoti klausimą