logo

Com git desfer l'últim commit

Com a enginyer de programari o desenvolupador web, és possible que necessitem impulsar moltes confirmacions al nostre repositori Git.

Tanmateix, hi ha altres casos en què volem confirmar els fitxers que no s'enviaran al nostre repositori Git. Abans d'emetre qualsevol compromís, potser volem implementar alguns canvis addicionals de vegades.

Com a efecte, necessitem desfer l'últim commit a través del nostre repositori Git. Veurem com podem desfer l'últim commit en aquest tema.

Desfés el darrer compromís de Git juntament amb un restabliment

Podem desfer fàcilment l'últim commit de git executant l'ordre, és a dir, 'git reset' juntament amb una opció, és a dir, '-suau' que protegirà tots els canvis fets als nostres fitxers. Hem de descriure el compromís de desfer que és 'HEAD~1'.

L'últim commit del git s'eliminarà del nostre repositori Git.

 $ git reset --soft HEAD~1 

En aquesta notació,

'HEAD~1': Vol dir que volem restablir aquest HEAD a una única confirmació abans de dins de l'historial del registre.

cadena a char java
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

Quin serà l'efecte de l'ordre anterior?

L'ordre, és a dir, 'git reset' es pot veure com una ordre, és a dir, oposada a 'git add' , bàsicament inserint fitxers a l'índex Git.

Si es descriu l'opció de '-suau' , Git no canviarà els fitxers de l'índex ni del directori d'execució.

Per exemple, hem inclòs dos fitxers dins del nostre recent commit, tot i que volem implementar alguns canvis en aquest fitxer.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit 

Com a resultat, l'aplicarem 'git reset' juntament amb l'opció de '-suau' per desfer l'últim commit i també implementar alguns canvis addicionals.

 $ git reset --soft HEAD~1 $ git status 

Sobre el mestre de branca

La nostra sucursal és mestre/origen per davant del commit 1 (aplica 'git push' per publicar els nostres commits locals).

Modificacions a cometre:

 (apply 'git restore --staged …' to unstage) 

nou fitxer: fitxer1

 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Com podem veure, encara el fitxer es troba a l'índex desfent l'últim commit (modificacions a confirmar) encara que el commit s'ha eliminat.

Hem fet l'últim commit al nostre repositori amb èxit.

normalització rdbms

Compromís de restabliment dur de Git

Podem considerar a la secció anterior que podem fàcilment desfer l'últim commit i conservar les modificacions fet a qualsevol fitxer dins de l'índex. Però en algunes situacions, simplement volem eliminar els canvis i les confirmacions fetes a qualsevol fitxer.

És un objectiu d'una opció, és a dir, '-difícil' .

Per desfer l'última confirmació i eliminar totes les modificacions de l'índex i el directori, executeu una ordre, és a dir, 'git reset' juntament amb l'opció, és a dir, '-difícil' i descriu una confirmació abans de l'ordre HEAD ('CABAL~1') .

 $ git reset --hard HEAD~1 

Totes les confirmacions i modificacions s'eliminaran de l'índex i el directori després d'utilitzar '--difícil' comandament. Així que hem d'anar amb compte.

Per exemple, hem enviat qualsevol fitxer nou anomenat 'fitxer1' al nostre repositori Git.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Ara, suposem que volem desfer l'última confirmació i eliminar tots els canvis.

python snake vs anaconda
 $ git reset --hard HEAD~1 

Ara, HEAD està en 90f8bb1 Segon commit

Ara, comprovem l'estat del nostre repositori git.

 $ git status 

Sobre el mestre de branca

La nostra branca és contemporània amb master/origin (aplica l'ordre 'git push' per publicar els nostres commits locals).

replaceall en cadena java

Ara, no hi ha res per cometre, i l'arbre de treball està net.

Commit mixt de restabliment de Git

Mantingueu la modificació dins del nostre directori de treball, però NO dins de l'índex. Hem d'aplicar l'ordre, és a dir ., 'git reset' juntament amb l'opció, és a dir, '-mixt' . Després d'aquesta ordre, hem d'afegir el 'HEAD~1' simplement a l'últim commit.

 $ git reset --mixed HEAD~1 

Per exemple, hem inclòs qualsevol fitxer anomenat 'fitxer1' dins de qualsevol confirmació que necessitem desfer.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Simplement, executem l'ordre, és a dir, 'git reset' juntament amb l'opció, és a dir, '-mixt' per desfer l'últim commit.

Com a resultat, el '-mixt' l'ordre és a 'barrejar' entre el hard i soft reset, així el seu nom.

Sobre el mestre de branca

La nostra sucursal és mestre/origen per davant del commit 1 (aplica 'git push' per publicar els nostres commits locals).

Fitxers sense seguiment: (aplica 'git add...' per afegir-hi el que es comprometrà)

 file1 

No s'inclou res per comprometre's, però els fitxers sense seguiment estan presents (aplica 'git track' per al seguiment).

Per tant, hem detectat una altra pràctica per revertir l'últim commit conservant les modificacions fetes als fitxers.

string.format java

Desfés l'últim commit juntament amb la reversió

Aplica l'ordre, és a dir, 'git revertir' i descriu un compromís que cal revertir, és a dir, 'CAF' a la confirmació de l'historial per revertir l'última confirmació de Git.

 $ git revert HEAD 

L'ordre 'git revert' és diferent en comparació amb l'ordre 'git reset' perquè pot registrar qualsevol confirmació nova juntament amb algunes modificacions definides en degenerar l'última confirmació.

Podem descriure 'HEAD~1' amb l'ordre 'git reset' perquè aquesta ordre de restabliment establirà qualsevol lloc de HEAD nou mentre degenera el commit descrit.

Com a resultat, tornarem a confirmar les modificacions en alguns fitxers per revertir-los i ens comprometem a no realitzar-les. Hem compromès qualsevol fitxer nou per al nostre repositori de Git, però volem degenerar aquesta confirmació.

 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Si executeu l'ordre 'git revert', Git obrirà el nostre editor de text per confirmar les modificacions automàticament.

Com git desfer l'últim commit

Un missatge nou es mostrarà juntament amb un nou hash de commit quan acabem d'executar un missatge de commit.

 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1 

Si hem de tornar a comprovar el nostre historial de Git, podem notar que s'ha afegit un nou commit per desfer l'últim commit a través del nostre repositori.

 $ 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