Kezdjük néhány fájl hozzáadásával. Az utolsó elkötelezettség esetén fájlokat adunk hozzá és törölünk is, hogy rendetlen helyzetet hozzunk létre. Akkor visszatérünk a káosz előtti állapotba.
Létrehozhat egy / test nevű mappát, és futtathatja a következő parancsokat a Git inicializálásához és a fent leírt helyzet létrehozásához (szándékosan külön elkötelezzük az előzmények létrehozását):
$ git initInicializált üres Git-adattár a / Users / zakh_eecs / _work / LearnGIT / git_revert / test / könyvtárban.git /
$ echo x> file_1.txt
$ git add -A
$ git kötelezettség -m "Fájl hozzáadása_1.txt "
[master (root-activ) 08caf5d] Fájl hozzáadása_1.txt
1 fájl megváltozott, 1 beszúrás (+)
létrehozási mód 100644 file_1.txt
$ echo y> fájl_2.txt
$ git add -A
$ git kötelezettség -m "Fájl hozzáadása_2.txt "
[master ba18a2f] Fájl hozzáadása_2.txt
1 fájl megváltozott, 1 beszúrás (+)
létrehozási mód 100644 file_2.txt
$ echo z> file_3.txt
$ git add -A
$ git kötelezettség -m "Fájl hozzáadása_3.txt "
[master 97f09ad] Fájl hozzáadása_3.txt
1 fájl megváltozott, 1 beszúrás (+)
létrehozási mód 100644 file_3.txt
$ echo u> fájl_4.txt
$ git add -A
$ git kötelezettség -m "Fájl hozzáadása_4.txt "
[master 9caf084] Fájl hozzáadása_4.txt
1 fájl megváltozott, 1 beszúrás (+)
létrehozási mód 100644 file_4.txt
$ echo v> fájl_5.txt
$ git add -A
$ git kötelezettség -m "Fájl hozzáadása_5.txt "
[master 3f228b2] Fájl hozzáadása_5.txt
1 fájl megváltozott, 1 beszúrás (+)
létrehozási mód 100644 file_5.txt
Ha megnézzük a mappánkat, akkor a következő helyzetet kell látnunk:
$ ls -1file_1.txt
file_2.txt
file_3.txt
file_4.txt
file_5.txt
Ha ellenőrizzük az előzményeket, a következő fájlokkal kell rendelkeznünk:
$ git log - online3f228b2 Fájl hozzáadása_5.txt
9caf084 Fájl hozzáadása_4.txt
97f09ad Fájl hozzáadása_3.txt
ba18a2f_2 fájl hozzáadása.txt
08caf5d Fájl hozzáadása_1.txt
Most hozzunk létre egy kis pusztítást, törölni fogunk néhány fájlt, és hozzáadunk egy rossz fájlt.
$ rm fájl_2.txt$ rm fájl_4.txt
$ echo w> my_bad_file.txt
$ git add -A
$ git pühend -m "Fájlok hozzáadása és törlése a következmények gondolkodása nélkül"
[master 879fbf8] Fájlok hozzáadása és törlése a következmények gondolkodása nélkül
3 fájl megváltozott, 1 beszúrás (+), 2 törlés (-)
törlés 100644 mód_2 fájl_2.txt
törlés mód 100644 file_4.txt
létrehozási mód 100644 my_bad_file.txt
Ez a mappa feltétele:
$ ls -1file_1.txt
file_3.txt
file_5.txt
my_bad_file.txt
És ez a történelmünk feltétele:
$ git log - online879fbf8 Fájlok hozzáadása és törlése a következmények gondolkodása nélkül
3f228b2 Fájl hozzáadása_5.txt
9caf084 Fájl hozzáadása_4.txt
97f09ad Fájl hozzáadása_3.txt
ba18a2f_2 fájl hozzáadása.txt
08caf5d Fájl hozzáadása_1.txt
Tudomásul vesszük, hogy nem akarjuk az utolsó 879fbf8 elkötelezettséget. Tehát a következő revert parancsot használjuk:
$ git revert 879fbf8Megnyit egy szöveges ablakot az automatikus megjegyzés szerkesztéséhez:
Visszaállítani a "Hozzáadott és törölt fájlokat következmények nélkül"Ez visszaváltja a 879fbf849c4bd6fb9a377604d6355c76b92a832c elkötelezettséget.
# Kérjük, adja meg a változtatásokat elkövető üzenetet. Vonalak indulnak
A # a # jelzéssel együtt figyelmen kívül marad, és egy üres üzenet megszakítja a végrehajtást.
# Fiókmesteren
# Elkövetendő változtatások:
# Új fájl: file_2.txt
# Új fájl: file_4.txt
# Törölve: my_bad_file.txt
#
Módosíthatja a megjegyzést. Meg fogjuk tartani, ahogy van. Amint elmenti a megjegyzésablakot, megtörténik a visszaállítási feladat:
$ git revert 879fbf8[master 6e80f0e] Visszaállítja a "Hozzáadott és törölt fájlokat a következmények gondolkodása nélkül"
3 fájl megváltozott, 2 beszúrás (+), 1 törlés (-)
létrehozási mód 100644 file_2.txt
létrehozási mód 100644 file_4.txt
100644 my_bad_file mód törlése.txt
Nézzük meg most a mappánkat:
$ ls -1file_1.txt
file_2.txt
file_3.txt
file_4.txt
file_5.txt
Dossziéink sorrendben állnak vissza, mint korábban. Az összes kiegészítést és törlést visszavonták. Ellenőrizzük a naplót:
$ git log - online6e80f0e Visszaállítás "Hozzáadott és törölt fájlok a következmények gondolkodása nélkül"
879fbf8 Fájlok hozzáadása és törlése a következmények gondolkodása nélkül
3f228b2 Fájl hozzáadása_5.txt
9caf084 Fájl hozzáadása_4.txt
97f09ad Fájl hozzáadása_3.txt
ba18a2f_2 fájl hozzáadása.txt
08caf5d Fájl hozzáadása_1.txt
Új elkötelezettség van 6e80f0e. Bármely változás, amelynek része volt 879fbf8 visszavonták, majd ben követték el 6e80f0e.
Figyelem: A Git reset parancs lehetővé teszi a visszavonások visszavonását is. De a visszaállítási esetben (különösen a hard reset esetén) törölte volna a 879fbf8 elkövetni, mint soha, és nem is lett volna 6e80f0e elkövetni. Egy visszavonási paranccsal mindenki láthatja a megtörtént változásokat. Visszaállítás esetén nem marad nyom. Tehát rossz ötlet a reset parancs használata egy nyilvános adattárban, mert tömeges zavart okozhat. Az aranyszabály: a nyilvános tárhelyeken ne használja a reset-et, a biztonságosabb visszaváltást használja.
Következtetésképpen:
A Git revert parancs gyors és kényelmes módszer a hibák kijavítására. Ez egy parancs, amelyre emlékeznie kell, ha rendszeresen dolgozik a Gittel.
A további vizsgálat:
- https: // git-scm.com / docs / git-revert
- https: // git-scm.com / docs / git-reset
- Git: Ismerje meg a verziókezelést a Git segítségével: lépésről lépésre végső útmutató kezdőknek
- Verziókezelés a Gittel: Hatalmas eszközök és technikák az együttműködő szoftverfejlesztéshez
- Pro Git, 2. kiadás