Kaip pakeisti simbolį komitete?
sobes.tech AI
Atsakymas iš AI
Yra keletas būdų pakeisti ženklelį commit'e:
-
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ę.
-
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 HEADPo šios komandos vykdymo atsidarys tekstinis redaktorius su paskutinių N commit'ų sąrašu. Suraskite tą commit'ą, kurį norite keisti, ir pakeiskite žodį
pickįreword(arbar).Išsaugokite ir uždarykite redaktorių. Git pasiūlys keisti kiekvieno
rewordpaž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 keistiPakeiskite į:
pick a1b2c3d Commit 1: Pradinė žinutė pick e4f5g6h Commit 2: Dar viena žinutė reword i7j8k9l Commit, kurį reikia keistiIšsaugokite ir uždarykite redaktorių. Git sustos ties trečiu commit'u ir pasiūlys jį keisti.
-
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/_/-/"' -- --allTai 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).