Ohjelmistoinsinöörinä tai verkkokehittäjänä saatamme vaatia monia sitoumuksia Git-tietovarastoon.
On kuitenkin joitain muita tapauksia, joissa haluamme sitoa tiedostot, joita ei työnnetä Git-arkistoon. Ennen sitoumusta saatamme joskus haluta tehdä joitain lisämuutoksia.
Tämän seurauksena meidän on kumottava viimeinen sitoumus Git-arkistomme kautta. Katsotaan, kuinka voimme kumota tämän aiheen viimeisen sitoumuksen.
Kumoa Last Git Commit ja nollaa
Voimme helposti kumota viimeisen git-sitoumuksen suorittamalla komennon, eli 'git reset' yhdessä vaihtoehdon kanssa, ts. '-pehmeä' joka suojaa kaikki tiedostoihimme tehdyt muutokset. Meidän on kuvattava sitoumus kumota, joka on 'HEAD~1'.
Gitin viimeinen sitoumus poistetaan Git-varastosta.
$ git reset --soft HEAD~1
Tässä merkinnässä
'HEAD~1': Se tarkoittaa, että haluamme nollata tämän HEADin yhdeksi toimitukseksi ennen lokin historiaa.
null tarkistus javassa
$ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2)
Mikä on yllä olevan komennon vaikutus?
Käsky, ts. 'git reset' voidaan nähdä komentona, eli vastakohtana 'git add' , lähinnä tiedostojen lisääminen Git-hakemistoon.
Jos kuvataan vaihtoehtoa '-pehmeä' , Git ei muuta hakemiston tai suoritushakemiston tiedostoja ollenkaan.
Olemme esimerkiksi sisällyttäneet kaksi tiedostoa äskettäiseen sitoumukseemme, vaikka haluammekin tehdä joitain muutoksia tähän tiedostoon.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit
Tämän seurauksena aiomme hakea 'git reset' yhdessä vaihtoehdon kanssa '-pehmeä' peruuttaaksesi viimeisimmän sitoumuksen ja tehdäksesi myös joitain lisämuutoksia.
$ git reset --soft HEAD~1 $ git status
Haarajohtajan yli
Haaramme on master/origin edellä sitoumuksella 1 (käytä 'git push' -toimintoa paikallisten sitoumustemme julkaisemiseen).
Tehtävät muutokset:
(apply 'git restore --staged …' to unstage)
uusi tiedosto: file1
$ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Kuten näemme, tiedosto on edelleen hakemistossa kumoamalla viimeinen toimitus (sitovat muutokset), vaikka toimitus poistettiin.
Olemme tehneet viimeisen sitoumuksen arkistossamme onnistuneesti.
jframe
Hard Reset Git commit
Voimme ajatella yllä olevassa osiossa, että voimme helposti kumoa viimeinen sitoumus ja säilytä muutokset tehty mille tahansa hakemiston sisällä olevalle tiedostolle. Mutta joissakin tilanteissa haluamme vain poistaa mihin tahansa tiedostoon tehdyt muutokset ja sitoumukset.
Se on vaihtoehdon tavoite, ts. '-kovaa' .
Kumoa viimeinen sitoumus ja poista kaikki muutokset indeksissä ja hakemistossa suorittamalla komento, eli 'git reset' vaihtoehdon kanssa, ts. '-kovaa' ja kuvaile sitoumus ennen komentoa HEAD ('HEAD~1') .
$ git reset --hard HEAD~1
Kaikki sitoumukset ja muutokset poistetaan hakemistosta ja hakemistosta '--kovaa' komento. Meidän tulee siis olla varovaisia.
Olemme esimerkiksi sitoneet kaikki uudet tiedostot nimeltä 'file1' Git-arkistoon.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Oletetaan nyt, että haluamme kumota viimeisen sitoumuksen ja poistaa kaikki muutokset.
java sopimusten nimeäminen
$ git reset --hard HEAD~1
Nyt HEAD on 90f8bb1 toisessa sitoumuksessa
Nyt tarkistetaan git-arkiston tila.
$ git status
Haarajohtajan yli
Haaramme on nykyaikainen master/origin (käytä 'git push' -komentoa paikallisten sitoumustemme julkaisemiseen).
mikä on 10 miljoonasta
Nyt ei ole mitään sitoutumista, ja työpuu on puhdas.
Mixed Reset Git commit
Säilytä muutokset työhakemistossamme, EI kuitenkaan hakemistossa. Meidän on sovellettava komentoa, ts ., 'git reset' vaihtoehdon kanssa, ts. '-sekoitettu' . Tämän komennon jälkeen meidän on liitettävä 'HEAD~1' yksinkertaisesti viimeiseen vahvistukseen.
$ git reset --mixed HEAD~1
Olemme esimerkiksi sisällyttäneet minkä tahansa tiedoston nimeltä 'tiedosto1' kaikkiin sitoumuksiin, jotka vaadimme kumoamaan.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Yksinkertaisesti suoritamme komennon, eli 'git reset' vaihtoehdon kanssa, ts. '-sekoitettu' viimeisen sitoumuksen kumoamisesta.
Tämän seurauksena '-sekoitettu' komento on a 'sekoita' kovan ja pehmeän nollauksen joukossa, joten sen nimi.
Haarajohtajan yli
Haaramme on master/origin edellä sitoumuksella 1 (käytä 'git push' -toimintoa paikallisten sitoumustemme julkaisemiseen).
Jäljittämättömät tiedostot: (käytä 'git add…' lisätäksesi sitovan sisällön)
file1
Mitään ei sisälly sitoutumiseen, mutta jäljittämättömät tiedostot ovat läsnä (käytä 'git track' seurantaan).
Joten olemme havainneet toisen käytännön palauttaa viimeinen sitoumus säilyttämällä tiedostoihin tehdyt muutokset.
Kumoa viimeinen sitoumus ja palauta
Käytä komentoa, eli 'git revert' ja kuvaile peruutettavaa sitoumusta, eli 'PÄÄ' historian sitoumukselle viimeisen Git-sitoumuksen palauttamisesta.
$ git revert HEAD
Komento 'git revert' eroaa komennolla 'git reset', koska se voi tallentaa minkä tahansa uuden toimituksen sekä joitain muutoksia, jotka on määritetty poistamalla viimeinen toimitus.
Voimme kuvata 'HEAD~1' komennolla 'git reset', koska tämä nollauskomento asettaa minkä tahansa uuden HEAD-paikan samalla kun kuvattua toimitusta degeneroidaan.
Tämän seurauksena sitoudumme joihinkin tiedostoihin tehdyt muutokset uudelleen palautettavaksi ja sitoudumme olemaan suorittamattomia. Olemme tehneet uuden tiedoston Git-varastossamme, mutta haluamme degeneroida tämän sitoumuksen.
$ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Jos suoritetaan komento 'git revert', Git avaa tekstieditorin ja tekee muutokset automaattisesti.
Uusi viesti tulee näkyviin uuden vahvistushajasteen kanssa, kun olemme suorittaneet toimitusviestin.
listan iterointi javassa
[master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1
Jos meidän on tarkistettava Git-historiamme uudelleen, voimme huomata, että uusi sitoumus on lisätty viimeisimmän toimituksen kumoamiseksi arkistomme kautta.
$ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit