Viac na
Ako upraviť existujúce, neodoslané správy o revízii?
V správe o revízii som napísal nesprávnu vec.
Ako môžem správu zmeniť? Revízia ešte nebola odoslaná.
7670
3
Zmena poslednej správy o revízii
otvorí váš editor, ktorý vám umožní zmeniť správu o odovzdaní poslednej revízie. Okrem toho môžete správu o odovzdaní nastaviť priamo v príkazovom riadku pomocou:
Jazyk: bash -->
...to však môže spôsobiť, že zadávanie viacriadkových správ o odovzdaní alebo malých opráv bude ťažkopádnejšie.
Pred týmto postupom sa uistite, že nemáte žiadne zmeny pracovnej kópie staged, inak budú tiež odovzdané. (Zmeny nezastavené sa neodovzdajú.)
Zmena správy o revízii, ktorú ste'už odoslali do vzdialenej vetvy
Ak'ste už posunuli svoju revíziu do vzdialenej vetvy, potom budete musieť vynútiť posunutie revízie pomocou:
Varning: force-pushing prepíše vzdialenú vetvu stavom vašej lokálnej vetvy. Ak sú vo vzdialenej vetve revízie, ktoré nemáte vo svojej lokálnej vetve, o tieto revízie prídete.
Upozornenie: buďte opatrní pri zmene revízií, ktoré ste už zdieľali s inými ľuďmi. Zmena revízií ich v podstate prepíše tak, aby mali iné SHA ID, čo predstavuje problém, ak majú iní ľudia kópie starých revízií, ktoré ste prepísali. Každý, kto má kópiu starej revízie, bude musieť synchronizovať svoju prácu s vašou novo prepísanou revíziou, čo môže byť niekedy ťažké, takže sa uistite, že pri pokuse o prepísanie zdieľanej histórie revízií sa koordinujete s ostatnými, alebo sa jednoducho vyhnite prepisovaniu zdieľaných revízií úplne.
Používajte interaktívne rebase
Ďalšou možnosťou je použiť interaktívne rebase. To vám umožní upraviť akúkoľvek správu, ktorú chcete aktualizovať, aj keď to nie je najnovšia správa.
Ak chcete vykonať skvasenie Git, postupujte podľa týchto krokov:
Po squashovaní revízií - vyberte
e/r
pre úpravu správy:Dôležitá poznámka o interaktívnom rebase
Pri použití
git rebase -i HEAD~X
môže byť viac akoX
revízií. Git "zhromaždí" všetky revízie v poslednom rozsahuX
revízií, a ak došlo k zlúčeniu niekde medzi týmto rozsahom, uvidíte aj všetky revízie, takže výsledok bude X+.Dobrý tip:
Ak to musíte urobiť pre viac ako jednu vetvu a pri zmene obsahu by ste mohli naraziť na konflikty, nastavte
git rerere
a nechajte systém Git, aby tieto konflikty vyriešil automaticky za vás.Dokumentácia
git-commit(1) Manual Page
git-rebase(1) Manual Page
git-push(1) Manual Page
Ak revízia, ktorú chcete opraviť, nie je najnovšia:
git rebase --interactive $parent_of_flawed_commit
Ak chcete opraviť niekoľko chybných revízií, odovzdajte rodiča najstaršej z nich.
Zobrazí sa editor so zoznamom všetkých revízií od tej, ktorú ste zadali.
pick
nareword
(alebo v starších verziách systému Git naedit
).Pre každú revíziu, ktorú chcete opraviť, vás Git pustí späť do editora. Pre každú revíziu, ktorú chcete editovať, vás Git hodí do shellu. Ak ste v shelli:
git commit --amend
git rebase --continue
Väčšinu z tejto postupnosti vám vysvetlí výstup jednotlivých príkazov, keď budete postupovať. Je to veľmi jednoduché, nemusíte si to pamätať - stačí si zapamätať, že
git rebase --interactive
vám umožňuje opravovať revízie bez ohľadu na to, ako dávno boli vykonané.Všimnite si, že nebudete chcieť meniť revízie, ktoré ste už odoslali. Alebo možno chcete, ale v tom prípade budete musieť veľmi starostlivo komunikovať s každým, kto možno stiahol vaše revízie a vykonal nad nimi prácu. Ako obnoviť/resynchronizovať po tom, čo niekto tlačí rebase alebo reset do publikovanej vetvy?