Maison > outils de développement > git > Comment modifier l'historique dans git

Comment modifier l'historique dans git

WBOY
Libérer: 2022-01-14 14:19:27
original
9058 Les gens l'ont consulté

Méthode : 1. Utilisez la commande "git commit --amend" pour modifier l'enregistrement de l'historique une fois ; 2. Utilisez la commande "git rebase -i spec commit number" pour modifier plusieurs enregistrements de l'historique ; La commande branch --filer "Plage modifiée de la commande" réécrit l'historique.

Comment modifier l'historique dans git

L'environnement d'exploitation de cet article : système Windows 10, Git version 2.30.0, ordinateur Dell G3.

Comment modifier l'historique de git

Joueur junior git amend

Si vous vous retrouvez désactivé après la soumission, vous pouvez utiliser git commit --amend pour modifier la soumission précédente. Une fois cette commande exécutée, elle supprimera la validation précédente de la branche actuelle, restaurera l'espace de travail à l'état dans lequel il a été préparé pour la dernière fois (tout en mélangeant les modifications après la dernière validation), puis affichera une interface vim pour vous. et modifiez les dernières informations de validation. Après avoir enregistré dans vim, toutes les modifications actuelles seront soumises avec de nouvelles informations de soumission.

Cette commande ne peut modifier que le dernier commit. Une commande équivaut à exécuter la série d'actions suivante :

    $ORIG_HEAD=`git show`#保存当前的这次提交的 commit 号
    $git reset --soft HEAD^#回到最后一次提交准备提交前的状态
    $...#做一些操作和修改
    $git commit -c $ORIG_HEAD#表示用最后一次提交的提交信息来做为提交信息,不过会调出编辑器界面
Copier après la connexion

Joueur intermédiaire git rebase

Le git commit --amend précédent ne peut modifier que le dernier commit, mais quand Sur un coup de tête, lorsque nos mains sont désactivées, cette commande ne peut pas nous sauver. Pour le moment, nous devons utiliser l'outil tueur de git rebase -i pour nous aider à modifier ces événements passés insupportables.

En fait, git rebase -i n'est pas une commande spécifiquement utilisée pour modifier les enregistrements de l'historique, mais une commande qui nous permet d'effectuer des opérations de rebase de manière interactive (c'est-à-dire une par une), mais nous pouvons utiliser cette commande pour y parvenir Pour les modifications à l’historique des commits.

La méthode d'utilisation de cette commande est git rebase -i . Par exemple, vous pouvez utiliser git rebase -i HEAD~3 pour modifier trois soumissions : cette soumission, la dernière soumission et la soumission précédente.

Comment modifier lhistorique dans git

Comme le montre l'image, si je soumets ces trois modifications et que je saisis git rebase -i HEAD~3, l'interface suivante apparaîtra :

Comment modifier lhistorique dans git

C'est l'interface d'un éditeur vim. Lors de l'édition de ce script, les commandes pouvant être utilisées sont les six commandes dans les commentaires ci-dessous. Après avoir quitté la page où vous la modifiez actuellement, git effectuera les opérations correspondantes sur les soumissions une par une selon ce script (en commençant par la première soumission).

Si vous souhaitez simplement modifier les informations de validation, remplacez tous les choix par r, puis : wq save, puis git vous permettra de les modifier une par une en commençant par les premières informations de validation.

Parmi les commandes restantes, nous ferons apparaître l'éditeur vim lors de la modification de la soumission correspondante. À ce moment, le pointeur HEAD pointe vers cette soumission. À ce moment, vous pouvez utiliser git commit --amend pour y apporter diverses modifications. soumission, puis exécutez git rebase --continue poursuivra l'opération suivante ; s fusionnera cette soumission et sa soumission parent en une seule soumission lors de la modification de la soumission correspondante ; f est similaire à s mais ignorera les informations de la soumission actuelle et directement ; utiliser Les informations de la soumission parent ; x nécessite de saisir la commande après x, puis de l'exécuter lorsque HEAD pointe vers cette soumission. Ces commandes peuvent également être utilisées pour réorganiser les soumissions et les diviser.

La branche de filtre git tueuse ultime

Supposons qu'après avoir soumis N fois, nous découvrions soudainement que les adresses e-mail de nos soumissions étaient toutes fausses (╯°□°)╯︵ ┻━┻, à ce moment-là, si vous l'utilisez avant, les commandes mentionnées seront probablement épuisées avant d'être terminées. À ce stade, nous pouvons utiliser git filter-branch pour réécrire la branche, qui peut effectuer nos opérations prédéfinies sur chaque soumission par lots

git filter. Le format d'utilisation de base de la commande -branch est git filter-branch -- 'Command' . Différents filtres fourniront différentes entrées et sorties à la commande, par exemple --msg -filter. signifie modifier les informations de validation, les informations de validation d'origine sont lues à partir de l'entrée standard et les nouvelles informations de validation sont sorties vers la sortie standard ; --tree-filter signifie modifier la liste des fichiers, etc. Enfin, il y aura une plage de réécriture ; , par exemple, git filter-. branch --env-filter 'GIT_AUTHOR_EMAIL=john@example.com export GIT_AUTHOR_EMAIL' HEAD peut être utilisé pour réécrire la boîte aux lettres. Il est recommandé de créer une branche pour essayer avant d'appeler la commande, puis d'exécuter. l'opération sur la branche que vous souhaitez modifier

Apprentissage recommandé : "Tutoriel Git"

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
git
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal