En tant qu'ingénieur logiciel ou développeur Web, nous pouvons avoir besoin de transférer de nombreux commits vers notre référentiel Git.
Cependant, il existe d'autres cas dans lesquels nous souhaitons valider les fichiers qui ne seront pas transférés vers notre référentiel Git. Avant d'émettre un commit, nous souhaiterons peut-être parfois implémenter des modifications supplémentaires.
En conséquence, nous devons annuler le dernier commit via notre référentiel Git. Nous verrons comment annuler le dernier commit dans cette rubrique.
Annuler le dernier commit Git avec une réinitialisation
Nous pouvons facilement annuler le dernier commit git en exécutant la commande, c'est-à-dire : 'git réinitialiser' avec une option, c'est-à-dire '-doux' cela protégera toutes les modifications apportées à nos fichiers. Nous devons décrire le commit à annuler qui est 'HEAD~1'.
Le dernier commit de git sera supprimé de notre référentiel Git.
$ git reset --soft HEAD~1
Dans cette notation,
'TÊTE~1' : Cela signifie que nous souhaitons réinitialiser ce HEAD à un seul commit avant dans l'historique du journal.
shweta tiwari
$ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2)
Quel sera l’effet de la commande ci-dessus ?
La commande, c'est-à-dire 'git réinitialiser' peut être considéré comme une commande, c'est-à-dire à l'opposé du 'git ajouter' , en insérant essentiellement des fichiers dans l'index Git.
Si vous décrivez l'option de '-doux' , Git ne modifiera pas du tout les fichiers dans l'index ou le répertoire d'exécution.
Par exemple, nous avons inclus deux fichiers dans notre récent commit, même si nous souhaitons implémenter certaines modifications dans ce fichier.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit
En conséquence, nous appliquerons 'git réinitialiser' avec la possibilité de '-doux' pour annuler le dernier commit et également implémenter quelques modifications supplémentaires.
$ git reset --soft HEAD~1 $ git status
Au-dessus du maître de succursale
Notre branche est maître/origine en avance par le commit 1 (appliquez 'git push' pour publier nos commits locaux).
modèles de programmation Java
Modifications à engager :
(apply 'git restore --staged …' to unstage)
nouveau fichier : fichier1
$ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Comme nous pouvons le voir, le fichier est toujours dans l'index en annulant le dernier commit (modifications à valider) bien que le commit ait été supprimé.
Nous avons effectué avec succès le dernier commit sur notre référentiel.
Réinitialisation matérielle du commit Git
On peut considérer dans la section ci-dessus que l'on peut facilement annuler le dernier commit et conserver les modifications fait à n’importe quel fichier à l’intérieur de l’index. Mais dans certaines situations, nous souhaitons simplement supprimer les modifications et les validations apportées à n'importe quel fichier.
C'est un objectif d'une option, c'est-à-dire '-dur' .
facteur
Pour annuler le dernier commit et supprimer toutes les modifications dans l'index et le répertoire, exécutez une commande, c'est-à-dire : 'git réinitialiser' avec l'option, c'est-à-dire '-dur' et décrire un commit avant la commande HEAD ('TÊTE~1') .
$ git reset --hard HEAD~1
Chaque validation et modification sera supprimée de l'index et du répertoire après avoir utilisé le '--dur' commande. Nous devrions donc être prudents.
Par exemple, nous avons validé tout nouveau fichier nommé « fichier1 » dans notre référentiel Git.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Supposons maintenant que nous souhaitions annuler le dernier commit et supprimer chaque modification.
$ git reset --hard HEAD~1
Maintenant, HEAD est sur 90f8bb1 Deuxième commit
Maintenant, vérifions l'état de notre référentiel git.
$ git status
Au-dessus du maître de succursale
Notre branche est contemporaine de master/origin (appliquer la commande 'git push' pour publier nos commits locaux).
comment convertir une chaîne en int java
Maintenant, il n’y a plus rien à commettre et l’arbre de travail est propre.
Validation Git de réinitialisation mixte
Conservez cependant les modifications dans notre répertoire de travail, PAS dans l'index. Nous devons appliquer la commande, c'est-à-dire ., 'git réinitialiser' avec l'option, c'est-à-dire '-mixte' . Après cette commande, nous devons simplement ajouter le 'HEAD~1' au dernier commit.
$ git reset --mixed HEAD~1
Par exemple, nous avons inclus tout fichier nommé « fichier1 » dans toute validation que nous devons annuler.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Simplement, nous exécutons la commande, c'est-à-dire 'git réinitialiser' avec l'option, c'est-à-dire '-mixte' pour annuler le dernier commit.
En conséquence, le '-mixte' la commande est un 'mélanger' parmi les réinitialisations matérielles et logicielles, d'où son nom.
Au-dessus du maître de succursale
Notre branche est maître/origine en avance par le commit 1 (appliquez 'git push' pour publier nos commits locaux).
Fichiers non suivis : (appliquez « git add… » pour ajouter ce qui sera validé)
file1
Rien n'est inclus pour la validation mais les fichiers non suivis sont présents (appliquez « git track » pour le suivi).
Nous avons donc détecté une autre pratique consistant à annuler le dernier commit en préservant les modifications apportées aux fichiers.
Annuler le dernier commit et revenir
Appliquez la commande, c'est-à-dire 'git revenir' et décrire un commit à annuler, c'est-à-dire 'TÊTE' au commit de l'historique pour annuler le dernier commit Git.
$ git revert HEAD
La commande 'git revert' est différente de la commande 'git reset' car elle peut enregistrer tout nouveau commit ainsi que certaines modifications définies en dégénérant le dernier commit.
Nous pouvons décrire 'HEAD~1' avec la commande 'git reset' car cette commande de réinitialisation définira toute nouvelle place HEAD tout en dégénérant le commit décrit.
En conséquence, nous validerons à nouveau les modifications apportées à certains fichiers pour les annuler et nous nous engagerons à ne pas les effectuer. Nous avons validé tout nouveau fichier pour notre référentiel Git mais nous souhaitons dégénérer ce commit.
trier la liste de tableaux java
$ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Si vous exécutez la commande 'git revert', Git ouvrira notre éditeur de texte pour valider automatiquement les modifications.
Un nouveau message s'affichera avec un nouveau hachage de validation lorsque nous aurons fini d'exécuter un message de validation.
[master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1
Si nous devons vérifier à nouveau notre historique de Git, nous pouvons remarquer un nouveau commit ajouté pour annuler le dernier commit via notre référentiel.
$ 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