Git

Git Hogyan lehet visszaállítani az utolsó elkötelezettséget?

Git Hogyan lehet visszaállítani az utolsó elkötelezettséget?
A Git hatékony eszköz, amely nyomon követi a kódot. Az eszköz egyik nagyszerű tulajdonsága, hogy könnyedén ellenőrizheti az előzményeket, és visszaállhat, ha hibát követett el. Hozzunk létre egy olyan helyzetet, ahol visszaállíthatjuk az utolsó elkötelezettséget, és megnézhetjük, hogyan működik a Git revert parancs.

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 init
Inicializá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 -1
file_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 - online
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

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 -1
file_1.txt
file_3.txt
file_5.txt
my_bad_file.txt

És ez a történelmünk feltétele:

$ git log - online
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

Tudomásul vesszük, hogy nem akarjuk az utolsó 879fbf8 elkötelezettséget. Tehát a következő revert parancsot használjuk:

$ git revert 879fbf8

Megnyit 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 -1
file_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 - online
 
6e80f0e 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:

Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...
Hogyan lehet játékot fejleszteni Linuxon
Egy évtizeddel ezelőtt nem sok Linux-felhasználó jósolta, hogy kedvenc operációs rendszerük egy napon a videojátékok népszerű játékplatformja lesz. El...
Kereskedelmi játékmotorok nyílt forráskódú portjai
Ingyenes, nyílt forráskódú és platformokon átívelő játékmotorok szabadidős programjai felhasználhatók a régi, valamint a meglehetősen friss játékcímek...