Sobes.tech
Junior

Kaip pakeisti simbolį komitete?

sobes.tech AI

Atsakymas iš AI

Yra keletas būdų pakeisti ženklelį commit'e:

  1. Paskutinio commit'o keitimas (dar nebuvo išsiųstas):

    Galite naudoti komandą git commit --amend. Tai leidžia pakeisti paskutinio commit'o žinutę arba pridėti/pašalinti failus.

    # Paskutinio commit'o žinutės keitimas
    git commit --amend -m "Nauja žinutė su kitu ženklu"
    

    Po šios komandos vykdymo atsidarys tekstinis redaktorius, kuriame galėsite redaguoti commit'o žinutę.

  2. Senesnių commit'ų keitimas (naudojant interaktyvų rebase):

    Šis būdas yra sudėtingesnis, bet leidžia keisti bet kurį commit'ą istorijoje. Naudojant šią komandą perrašoma istorija, todėl nerekomenduojama to daryti su commit'ais, kurie jau buvo išsiųsti į bendrąjį saugyklą, kurioje dirba kiti.

    # Interaktyvaus rebase pradžia nuo commit'o prieš tą, kurį norite keisti
    git rebase -i HEAD~N  # kur N yra commit'ų skaičius atgal nuo HEAD
    

    Po šios komandos vykdymo atsidarys tekstinis redaktorius su paskutinių N commit'ų sąrašu. Suraskite tą commit'ą, kurį norite keisti, ir pakeiskite žodį pick į reword (arba r).

    Išsaugokite ir uždarykite redaktorių. Git pasiūlys keisti kiekvieno reword pažymėto commit'o žinutę.

    Pavyzdys interaktyvaus rebase redaktoriaus turinio:

    pick a1b2c3d Commit 1: Pradinė žinutė
    pick e4f5g6h Commit 2: Dar viena žinutė
    pick i7j8k9l Commit, kurį reikia keisti
    

    Pakeiskite į:

    pick a1b2c3d Commit 1: Pradinė žinutė
    pick e4f5g6h Commit 2: Dar viena žinutė
    reword i7j8k9l Commit, kurį reikia keisti
    

    Išsaugokite ir uždarykite redaktorių. Git sustos ties trečiu commit'u ir pasiūlys jį keisti.

  3. Naudojant git filter-branch (sudėtingesnėms transformacijoms):

    Šis būdas yra galingesnis, bet reikalauja būti atsargiems. Jis leidžia perrašyti istoriją, taikant skriptą kiekvienam commit'ui. Jis gali būti naudojamas masinei ženklų keitimo operacijai commit žinutėse.

    # Pavyzdys naudojant filter-branch, keičiant `_` į `-` commit žinutėse
    git filter-branch --msg-filter 'sed "s/_/-/"' -- --all
    

    Tai perrašys visų šakų istoriją. Naudokite labai atsargiai!

Svarbi pastaba: Keisti commit'ų istoriją, kurie jau buvo išsiųsti į bendrą saugyklą, gali sukelti problemų kitiems kūrėjams. Jiems reikės sinchronizuoti savo vietinius saugyklas su pakeista istorija, kas gali reikalauti priverstinio atsisiuntimo (git pull --rebase arba git fetch && git reset --hard origin/branch).