Kuidas Gitiga: tühistage kohustus

Mõnikord võite Git repos muudatusi teha, kuid saate siis aru, et tegite vea. Nüüd soovite tagasi võtta need kohustused, et teie kood taas tööle hakkaks.

Selles juhendis vaatleme käsku git reset, mis on ette nähtud hoidlasse kohalike ja kaugsõnumite jaoks.

Erinevus giti lähtestamise ja taastamise vahel

Giti kasutamisel on oluline mõista erinevust lähtestamise ja tagasivõtukohustuste vahel.

  • Käsk git reset tühistab kohustused, eemaldades varasemad varasemad kohtud ja lähtestades Git HEAD varasema kohustuse. Mõni Giti ajalugu võib seda tehes kaduda, sõltuvalt sellest, millist suvandit kasutatakse.
  • Käsk git revert tühistab kohustused, luues uue käsu, mis tähistab hoidla varasemat olekut. Selle tegemisega ei kao ükski Giti ajalugu.

Juba lükkas muudatused sisse ja keegi teine ​​tõmbas need muudatused? Te ei tohiks muudatuste tagasivõtmiseks kasutada git lähtestamist, selle asemel peaksite kasutama funktsiooni git revert, nagu on kirjeldatud meie Giti tagasivõtmise juhendis.

Käsu git reset käsu kasutamine kohustuse tühistamiseks

Järgmiste näidete puhul oletagem, et meie kohalik Git-puu näeb välja selline:

1
2
3

    X

    |

A-B-C

X tähistab meie kohalikku kohustusteta muudatust Git HEAD-is, millele viitab C.

Kohustuse tühistamiseks nimega „C “Vea tõttu võime käivitada git lähtestamise käsu.

Sõltuvalt failide jälgimise vajadustest soovite kasutada git lähtestamise käsku erinevate lipukestega.

1. juhtum: kasutage giti lähtestamist ja eemaldage failid lavastuspiirkonnast

Giti ajaloo vaatamiseks saame kasutada käsku git reflog.

Saame kasutada git ls-faile, et näha meie projekti hetkel lavastatud faile:

1
2
3
4
5
6
7
8
9
10

$ Git reflog

f326d13 HEAD @ {0}: toimetama: lisatud C

358d535 HEAD @ {1}: pühenduma: lisatud B

00b61d5 HEAD @ {2}: kohustus (algne): lisatud A

 

$ Ls-failid

A
B
C
X

Jälgitud failide säilitamiseks alates kohustusest C, kuid eemaldage need Giti indeksist, saate käivitada:

1 Nullitakse HEAD ~ 1

HEAD ~ 1 Git-lühendit saab kasutada selleks, et eemaldada kohustus enne HEAD.

Kui kasutasite HEAD ~ 5, see eemaldaks kohustuse, mis on viis kohustust HEAD ees.

Giti indeksi muudatused, mida nimetatakse ka peatuspaigaks, kaob, nii et Giti puu oleks nüüd:

1
2
3

  X

  |

A-B

Mida saame kinnitada nende käskudega:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

$ Git reflog

358d535 HEAD @ {0}: lähtestamine: liikumine HEAD ~ 1

f326d13 HEAD @ {1}: toimetama: lisatud C

358d535 HEAD @ {2}: pühenduma: lisatud B

00b61d5 HEAD @ {3}: kohustus (algne): lisatud A

 

$ Ls-failid

A
B
 

$ Git olek

Oksameistril

Jälitamata failid:

  (kasutage "Lisan …" kaasata sellesse, mida pühendutakse)

 

        C

        X

 

Kui kasutate git lähtestamist ilma lipukesteta, ei eemalda me ühtegi faili. nad on lihtsalt lavastamata:

1
2

$ ls

A B C X

Lõpuks eemaldate lähtestatud kohustuse logikirje:

1
2
3
4
5
6
7
8
9
10
11
12

$ Git logi

toime 358d535bc5e06730e61d272be34a6d0e568f42af

Autor: Kasutaja < [email protected]äide.com>

Kuupäev: teisipäeval 10. veebruaril 13:54:55 2015 -0500

 

    Lisatud B

 

pühenduma 00b61d53fe06ee672fa0497b175fb7bd89e26b72

Autor: Kasutaja < [email protected]äide.com>

Kuupäev: teisipäeval 10. veebruaril 13:54:55 2015 -0500

 

    Lisatud A

2. juhtum: kasutage tarkvara git reset – ja säilitage failide muudatused

Kui kasutate pehmet lippu, säilitatakse kõik jälgitud failide ja Giti indeksi muudatused:

1 Lähtestamine – pehme PEAD ~ 1

Kõik järk-järgult failid jäävad samaks ja ühtegi faili ei eemaldata füüsiliselt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

$ Ls-failid

A
B
C
X
 

$ ls

A B C X

 

$ Git olek

Oksameistril

Kohustused:

  (kasutage "Jälgige HEAD …" lavastama)

 

        uus fail: C

        uus fail: X

Kasutades pehmet lippu, eemaldate ikkagi lähtestatud kohustuse logikirje.

2. juhtum: kasutage funktsiooni git reset –hard ja eemaldage kõik failide muudatused

Kui kasutate lippu –hard, kaovad kõik jälgitavate failide ja Giti indeksi muudatused:

1
2

$ Giti lähtestamine – raske pea ~ 1

HEAD on nüüd 3bf1b55 lisatud B

Pärast failide taastamist kõik failid on järk-järgult eemaldatud ja füüsiliselt eemaldatud:

1
2
3
4
5
6
7
8
9
10

$ Ls-failid

A
B
 

$ ls

A B

 

$ Git olek

Oksameistril

pole midagi teha, töökataloog puhas

Eemaldate uuesti lähtestatud kohustuse Giti logi kirje.

Proovige kasutada git reverteri, kui kohustused on juba surutud

Nagu eespool öeldud, kui te olete juba muudatused sisse viinud ja keegi teine ​​neid muudatusi sisse viinud, ei tohiks te muudatuste tühistamiseks kasutada git lähtestamist, selle asemel kasutage funktsiooni git reset.

Kui soovite tõesti, võite mõnede eelmiste Giti kohustuste kustutamiseks rakendada samu samme kui eelmises jaotises.

Pärast seda saate jõu valiku kasutamiseks teha väikese tõukefaili. Jällegi pole see soovitatav, kuna see võib tekitada tõsiseid konflikte teiste Giti kasutajate erinevate hoidlate olekute vahel.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me