Git Reset ja Git Revert'i ülim juhend

Tere tulemast meie git resetja git revertkäskude ülimale juhendile . See õpetus õpetab teile kõike, mida peate teadma Giti kasutamisel levinud vigade parandamise ja halbade toimingute tagasivõtmise kohta.

Mõistke Git-projekti kolme osa

Giti projektil on järgmised kolm peamist osa:

  1. GIT-kataloog
  2. Töökataloog (või töötav puu)
  3. Lavastusala

Git kataloog (asub YOUR-PROJECT-PATH/.git/) on koht, kus Git kauplustes kõik vajaliku täpselt jälgida projekti. See hõlmab metaandmeid ja objektide andmebaasi, mis sisaldab projekti failide tihendatud versioone.

Töökataloogi on koht, kus kasutaja teeb kohalike muudatuste projekti. Töökataloog tõmbab projekti failid kataloogi Git objektide andmebaasist ja paigutab need kasutaja kohalikku masinasse.

Märkus. Kataloogi tuntakse ka kui hoidlat või lühivormi repot. Kasutaja lokaalses masinas olevat repot nimetatakse "kohalikuks repoks", git-serveris olevat repot aga kaugturvaks.

Lähtealal on fail (nimetatakse ka "indeks", "laval", või "cache"), mis salvestab informatsiooni, mida läheb oma järgmise toime. Pühendumine on see, kui käskite Gitil need etapiviisilised muudatused salvestada. Git teeb hetktõmmise failidest sellistena, nagu need on, ja salvestab selle hetkepildi püsivalt kataloogi Git.

Kolme jaotise korral on failis igal ajal kolm peamist olekut: muudetud, pühendatud või etapiviisiline. Te muudate faili alati, kui muudate seda oma töökataloogis. Järgmine on see lavastatud, kui teisaldate selle lavastusalale. Lõpuks pannakse see toime pärast pühendumist.

Git Lähtesta

git resetKäsk võimaldab taastada oma praeguse pea kindlaksmääratud riik. Saate lähtestada nii konkreetsete failide kui ka kogu haru oleku. See on kasulik, kui te pole veel oma kohustusi GitHubi või mõnda muusse kaughoidlasse viinud.

Lähtestage fail või failikomplekt

Järgmine käsk võimaldab teil valikuliselt valida sisu tükke ja selle ennistada või lava tühistada.

git reset (--patch | -p) [tree-ish] [--] [paths]

Tühjendage fail

Kui teisaldasite faili lavastusalasse git add, kuid ei soovi enam, et see oleks osa git resetpühendusest , saate selle faili lava tühistamiseks kasutada :

git reset HEAD FILE-TO-UNSTAGE

Teie tehtud muudatused jäävad endiselt faili, see käsk eemaldab selle faili lihtsalt teie vahetusalas.

Lähtestage haru eelnevale pühendumisele

Järgmine käsk lähtestab teie praeguse haru HEAD antud COMMITja uuendab indeksit. Põhimõtteliselt kerib see teie haru oleku tagasi, seejärel kirjutage kõik kohustused, mida teete edasi, kirjutada kõik, mis tuli pärast lähtestuspunkti. Kui jätate selle välja MODE, on see vaikimisi järgmine --mixed:

git reset MODE COMMIT

Valikud MODEon järgmised:

  • --soft: ei lähtesta indeksfaili ega töötavat puud, kuid lähtestab HEAD commit. Muudab kõik failid väärtuseks „Tehtavaid muudatusi”
  • --mixed: lähtestab registri, kuid mitte töötava puu ja annab teada, mida pole värskendatud
  • --hard: lähtestab indeksi ja töötava puu. Tööpuus jälgitavate failide kõik muudatused on pärast seda commitära visatud
  • --merge: lähtestab registri ja värskendab tööpuus olevaid faile, mis erinevad commitHEAD-ist, kuid säilitavad need, mis erinevad indeksist ja töötavast puust
  • --keep: lähtestab registrikirjed ja värskendab tööpuus faile, mis erinevad commitHEAD-st. Kui failil, mis erineb commitHEAD-ist, on kohalikke muudatusi, tühistatakse lähtestamine

Oluline märkus raskete lähtestamiste kohta

Olge --hardvaliku kasutamisel väga ettevaatlik , git resetkuna see lähtestab teie pühendumuse, lavastusala ja töökataloogi. Kui seda suvandit ei kasutata õigesti, võib kirjutatud kood kaotsi minna.

Git Tagasi

Mõlemad git revertja git resetkäsud tühistavad eelmised toimingud. Kuid kui olete juba pühendunud kaughoidlasse, pole soovitatav seda kasutada, git resetkuna see kirjutab ümber toimingute ajaloo. See võib muuta teiste arendajatega hoidla kallal töötamise ja järjekindla toimingute ajaloo säilitamise väga keeruliseks.

Selle asemel on parem kasutada git revert, mis tühistab eelmise kohustuse tehtud muudatused, luues täiesti uue kohustuse, muutmata toimingute ajalugu.

Tühista kohustus või kohustuste kogum

Järgmine käsk võimaldab teil eelmise kohustuse või kohustuse muudatused ennistada ja uue kohustuse luua.

git revert [--[no-]edit] [-n] [-m parent-number] [-s] [-S[]] … git revert --continue git revert --quit git revert --abort

Üldised valikud:

 -e --edit
  • See on vaikevalik ja seda ei pea selgesõnaliselt määrama. See avab teie süsteemi vaiketeksti redaktori ja võimaldab teil enne tagasipöördumist uut sidumissõnumit redigeerida.
  • See valik teeb vastupidist -eja git reverttekstiredaktorit ei ava.
  • See valik takistab git reverteelmise kohustuse tühistamist ja uue loomist. Uue pühenduse loomise asemel -ntühistab eelmise kohustuse muudatused ja lisab need vahekaardi indeksisse ja töökataloogi.
 --no-edit
-n -no-commit

Näide.

Kujutame ette järgmist olukorda: 1.) Töötate failiga ning lisate ja täidate oma muudatused. 2.) Seejärel tegelete mõne muu asjaga ja teete veel mõned kohustused. 3.) Nüüd mõistate, et kolm või neli kohustust tagasi tegite midagi, mille soovite tagasi võtta - kuidas saate seda teha?

Võib-olla mõtlete, lihtsalt kasutage git reset, kuid see eemaldab kõik muudatused pärast seda, kui soovite muuta - git revertpäästmiseks! Vaatame läbi selle näite:

mkdir learn_revert # Create a folder called `learn_revert` cd learn_revert # `cd` into the folder `learn_revert` git init # Initialize a git repository touch first.txt # Create a file called `first.txt` echo Start >> first.txt # Add the text "Start" to `first.txt` git add . # Add the `first.txt` file git commit -m "adding first" # Commit with the message "Adding first.txt" echo WRONG > wrong.txt # Add the text "WRONG" to `wrong.txt` git add . # Add the `wrong.txt` file git commit -m "adding WRONG to wrong.txt" # Commit with the message "Adding WRONG to wrong.txt" echo More >> first.txt # Add the text "More" to `first.txt` git add . # Add the `first.txt` file git commit -m "adding More to first.txt" # Commit with the message "Adding More to first.txt" echo Even More >> first.txt # Add the text "Even More" to `first.txt` git add . # Add the `first.txt` file git commit -m "adding Even More to First.txt" # Commit with the message "Adding More to first.txt" # OH NO! We want to undo the commit with the text "WRONG" - let's revert! Since this commit was 2 from where we are not we can use git revert HEAD~2 (or we can use git log and find the SHA of that commit) git revert HEAD~2 # this will put us in a text editor where we can modify the commit message. ls # wrong.txt is not there any more! git log --oneline # note that the commit history hasn't been altered, we've just added a new commit reflecting the removal of the `wrong.txt`

Ja sellega olete veel ühe sammu lähemal, et oma must vöö Gitisse saada.