Leréinitialisation de git
,paiement git
, etgit revenir
Les commandes font partie des outils les plus utiles de votre boîte à outils Git. Ils vous permettent tous d'annuler une sorte de modification dans votre référentiel, et les deux premières commandes peuvent être utilisées pour manipuler des commits ou des fichiers individuels.
Parce qu'ils sont si similaires, il est très facile de confondre la commande à utiliser dans un scénario de développement donné. Dans cet article, nous allons comparer les configurations les plus courantes deréinitialisation de git
,paiement git
, etgit revenir
. J'espère que vous repartirez avec la confiance nécessaire pour naviguer dans votre référentiel à l'aide de l'une de ces commandes.
Il est utile de penser à chaque commande en fonction de son effet sur les trois mécanismes de gestion d'état d'un référentiel Git : le répertoire de travail, l'instantané intermédiaire et l'historique de validation. Ces composants sont parfois appelés "Les trois arbres" de Git. Nous explorons les trois arbres en profondeur sur leréinitialisation de git
page. Gardez ces mécanismes à l'esprit pendant que vous lisez cet article.
Une caisse est une opération qui déplace leDIRIGER
ref pointeur vers un commit spécifié. Pour le démontrer, considérons l'exemple suivant.
Cet exemple montre une séquence de commits sur leprincipal
bifurquer. LeDIRIGER
réf etprincipal
la référence de branche pointe actuellement vers le commit d. Exécutons maintenantgit paiement b
Il s'agit d'une mise à jour de l'arborescence "Commit History". Lepaiement git
La commande peut être utilisée dans une portée de validation ou de niveau fichier. Une extraction au niveau du fichier remplacera le contenu du fichier par celui du commit spécifique.
Un retour est une opération qui prend un commit spécifié et crée un nouveau commit qui inverse le commit spécifié.git revenir
ne peut être exécuté qu'au niveau de la validation et n'a pas de fonctionnalité au niveau du fichier.
Une réinitialisation est une opération qui prend un commit spécifié et réinitialise les "trois arbres" pour correspondre à l'état du référentiel à ce commit spécifié. Une réinitialisation peut être invoquée dans trois modes différents qui correspondent aux trois arbres.
L'extraction et la réinitialisation sont généralement utilisées pour effectuer des "annulations" locales ou privées. Ils modifient l'historique d'un référentiel, ce qui peut provoquer des conflits lors de la transmission vers des référentiels partagés distants. La restauration est considérée comme une opération sûre pour les "annulations publiques" car elle crée un nouvel historique qui peut être partagé à distance et n'écrase pas l'historique dont les membres de l'équipe distante peuvent dépendre.
Référence Git Reset vs Revert vs Checkout
Le tableau ci-dessous résume les cas d'utilisation les plus courants pour l'ensemble de ces commandes. Assurez-vous de garder cette référence à portée de main, car vous devrez sans aucun doute en utiliser au moins certains au cours de votre carrière Git.
Commande | Portée | Cas d'utilisation courants |
---|---|---|
réinitialisation de git | Au niveau de l'engagement | Supprimer les commits dans une branche privée ou supprimer les modifications non validées |
réinitialisation de git | Au niveau du fichier | Désorganiser un fichier |
paiement git | Au niveau de l'engagement | Basculez entre les branches ou inspectez les anciens instantanés |
paiement git | Au niveau du fichier | Ignorer les modifications dans le répertoire de travail |
git revenir | Au niveau de l'engagement | Annuler les commits dans une branche publique |
git revenir | Au niveau du fichier | (N / A) |
Opérations au niveau de la validation
Les paramètres que vous passez àréinitialisation de git
etpaiement git
déterminer leur portée. Lorsque vous n'incluez pas de chemin de fichier en tant que paramètre, ils fonctionnent sur des commits entiers. C'est ce que nous allons explorer dans cette section. Noter quegit revenir
n'a pas d'équivalent au niveau du fichier.
Réinitialiser un commit spécifique
Au niveau du commit, la réinitialisation est un moyen de déplacer la pointe d'une branche vers un autre commit. Cela peut être utilisé pour supprimer les commits de la branche actuelle. Par exemple, la commande suivante déplace lecorrectif
branche vers l'arrière par deux commits.
git checkout hotfix git reset HEAD~2
Les deux commits qui étaient à la fin decorrectif
sont maintenant suspendus ou commits orphelins. Cela signifie qu'ils seront supprimés la prochaine fois que Git effectuera un ramasse-miettes. En d'autres termes, vous dites que vous voulez jeter ces commits. Cela peut être visualisé comme suit :
Cette utilisation deréinitialisation de git
est un moyen simple d'annuler des modifications qui n'ont été partagées avec personne d'autre. C'est votre commande préférée lorsque vous avez commencé à travailler sur une fonctionnalité et que vous vous retrouvez à penser : « Oh merde, qu'est-ce que je fais ? Je devrais juste recommencer.
En plus de déplacer la branche actuelle, vous pouvez également obtenirréinitialisation de git
pour modifier l'instantané intermédiaire et/ou le répertoire de travail en lui transmettant l'un des indicateurs suivants :
--doux
– L'instantané intermédiaire et le répertoire de travail ne sont en aucun cas modifiés.--mixte
– L'instantané intermédiaire est mis à jour pour correspondre à la validation spécifiée, mais le répertoire de travail n'est pas affecté. Ceci est l'option par défaut.--dur
– L'instantané intermédiaire et le répertoire de travail sont tous deux mis à jour pour correspondre à la validation spécifiée.
Il est plus facile de considérer ces modes comme définissant la portée d'unréinitialisation de git
opération. Pour plus d'informations détaillées, visitez leréinitialisation de git
page.
Vérifier les anciens commits
Lepaiement git
La commande est utilisée pour mettre à jour l'état du référentiel à un point spécifique dans l'historique des projets. Lorsqu'il est passé avec un nom de branche, il vous permet de basculer entre les branches.
correctif git checkout
En interne, la commande ci-dessus ne fait que déplacerDIRIGER
vers une autre branche et mettez à jour le répertoire de travail en conséquence. Comme cela a le potentiel d'écraser les modifications locales, Git vous oblige à valider ouplanquetoutes les modifications dans le répertoire de travail qui seront perdues lors de l'opération d'extraction. Contrairement àréinitialisation de git
,paiement git
ne déplace aucune branche.
Vous pouvez également extraire des commits arbitraires en transmettant la référence de commit au lieu d'une branche. Cela fait exactement la même chose que l'extraction d'une branche : cela déplace leDIRIGER
référence au commit spécifié. Par exemple, la commande suivante extrait le grand-parent du commit actuel :
git checkout HEAD~2
Ceci est utile pour inspecter rapidement une ancienne version de votre projet. Cependant, puisqu'il n'y a pas de référence de branche à l'actuelDIRIGER
, cela vous place dans une maison individuelleDIRIGER
État. Cela peut être dangereux si vous commencez à ajouter de nouveaux commits car il n'y aura aucun moyen d'y revenir après avoir basculé vers une autre branche. Pour cette raison, vous devez toujours créer une nouvelle branche avant d'ajouter des commits à une branche détachée.DIRIGER
.
Annuler les commits publics avec Revert
La restauration annule un commit en créant un nouveau commit. C'est un moyen sûr d'annuler les modifications, car il n'a aucune chance de réécrire l'historique de validation. Par exemple, la commande suivante déterminera les modifications contenues dans l'avant-dernier commit, créera un nouveau commit annulant ces modifications et ajoutera le nouveau commit au projet existant.
git checkout hotfix git revert HEAD~2
Cela peut être visualisé comme suit :
Comparez cela avecréinitialisation de git
, quifaitmodifier l'historique de validation existant. Pour cette raison,git revenir
doit être utilisé pour annuler les modifications sur une branche publique, etréinitialisation de git
doit être réservé pour annuler les modifications sur une branche privée.
Vous pouvez aussi penser àgit revenir
comme outil pour défaireengagéchange, tandis queTÊTE de réinitialisation de git
est pour défairenon engagéchangements.
Commepaiement git
,git revenir
a le potentiel d'écraser des fichiers dans le répertoire de travail, il vous demandera donc de valider ouchangements de réservequi serait perdu lors de l'opération de retour.
Opérations au niveau des fichiers
Leréinitialisation de git
etpaiement git
Les commandes acceptent également un chemin de fichier facultatif comme paramètre. Cela modifie radicalement leur comportement. Au lieu d'opérer sur des instantanés entiers, cela les oblige à limiter leurs opérations à un seul fichier.
Git réinitialiser un fichier spécifique
Lorsqu'il est invoqué avec un chemin de fichier,réinitialisation de git
met à jour leinstantané mis en scènepour correspondre à la version du commit spécifié. Par exemple, cette commande récupérera la version defoo.py
dans l'avant-dernier commit et préparez-le pour le prochain commit :
git reset HEAD~2 foo.py
Comme avec la version au niveau de la validation deréinitialisation de git
, ceci est plus couramment utilisé avecDIRIGER
plutôt qu'un commit arbitraire. En coursgit reset HEAD foo.py
va déjouerfoo.py
. Les modifications qu'il contient seront toujours présentes dans le répertoire de travail.
Le--doux
,--mixte
, et--dur
les drapeaux n'ont aucun effet sur la version au niveau du fichier deréinitialisation de git
, car l'instantané mis en scène esttoujoursmis à jour, et le répertoire de travail estjamaismis à jour.
Fichier de paiement Git
L'extraction d'un fichier est similaire à l'utilisationréinitialisation de git
avec un chemin de fichier, sauf qu'il met à jour ledirecteur de travailà la place de la scène. Contrairement à la version au niveau de la validation de cette commande, cela ne déplace pas leDIRIGER
référence, ce qui signifie que vous ne changerez pas de branche.
Par exemple, la commande suivante rendfoo.py
dans le répertoire de travail correspond à celui de l'avant-dernier commit :
git checkout HEAD~2 foo.py
Tout comme l'invocation au niveau de la validation depaiement git
, cela peut être utilisé pour inspecter les anciennes versions d'un projet, mais la portée est limitée au fichier spécifié.
Si vous transférez et validez le fichier extrait, cela a pour effet de "revenir" à l'ancienne version de ce fichier. Notez que cela supprimetousdes modifications ultérieures du dossier, alors quegit revenir
La commande annule uniquement les modifications introduites par le commit spécifié.
Commeréinitialisation de git
, ceci est couramment utilisé avecDIRIGER
comme référence de validation. Par exemple,git checkout HEAD foo.py
a pour effet de rejeter les modifications non échelonnées àfoo.py
. C'est un comportement similaire àgit reset HEAD --hard
, mais il ne fonctionne que sur le fichier spécifié.
Résumé
Vous devriez maintenant disposer de tous les outils dont vous pourriez avoir besoin pour annuler les modifications dans un référentiel Git. Leréinitialisation de git
,paiement git
, etgit revenir
Les commandes peuvent prêter à confusion, mais lorsque vous pensez à leurs effets sur le répertoire de travail, l'instantané mis en scène et l'historique des validations, il devrait être plus facile de discerner quelle commande correspond à la tâche de développement en cours.
FAQs
How to remove git initialization? ›
- Press “Ctrl” + “Alt” + “T” to open the terminal. Opening the Terminal.
- Type in the following command and press “Enter”. rm -rf .git.
- This will delete the entire git repository and undo the changes made by the init command.
While git reset does this by moving the current head of the branch back to the specified commit, thereby changing the commit history, git revert does this by creating a new commit that undoes the changes in the specified commit and so does not change the history.
What is difference between reset revert and restore? ›Notice that revert and reset are history altering (making a new commit in former, and moving the tip in the latter), where as restore does not modify history. Let's consider an example of when you'd want to use restore instead of revert or reset .
How to revert changes using git command? ›First, you'll need to find the ID of the revision you want to see. This assumes that you're developing on the default main branch. Once you're back in the main branch, you can use either git revert or git reset to undo any undesired changes.
How to reinitialize a git? ›Performing a Reset (Git Reset)
First, you'll need to fetch the latest state of the remote repository, usually "origin," and then checkout the master branch (or whichever one you're resetting to). You can also check out and reset to an individual commit using its ID, e.g., git checkout 342c47a4 .
- Go to the installation folder of Git. Most of the times it is located in C:\Programs files or C:\Program files(x86)
- Double click the file to start the uninstallation process.
The git reset –hard command will revert uncommitted changes that exist in files that have been added to the index, whether those files are newly created files, or files that were added to the index in the past and have been edited since the last commit.
What are the three types of git reset? ›These trees are the Commit History ( HEAD ), the Staging Index, and the Working Directory. There are three command line options that correspond to the three trees. The options --soft, --mixed , and --hard can be passed to git reset .
Does git reset remove commits? ›To remove the last commit from git, you can simply run git reset --hard HEAD^ If you are removing multiple commits from the top, you can run git reset --hard HEAD~2 to remove the last two commits. You can increase the number to remove even more commits.
What should I backup before resetting? ›- App data.
- Call history.
- Contacts.
- Settings.
- SMS messages.
- Pictures and videos.
- MMS messages.
What is the difference between revert and rebase? ›
rebase doesn't change the code at all, but just changes the history. Revert allows you revert to a particular commit, losing everything between HEAD and that commit.
How to restore all changes in git? ›If you want to undo all of your current changes, you can use the git restore command with the "." parameter (instead of specifying a file path): $ git restore .
How to revert changes in git without commit? ›--no-commit or -n
Typically, when you run a git revert command, Git creates commits with commit log messages stating which commits were reverted. If you wish to add more changes before committing reverted changes, simply add --no-commit or -n to the revert message.
Undoing a Git Commit Using a Hard Reset
git reset --hard <version> also rewinds the HEAD version to the specified version the same way a soft reset does. The earlier commits are still removed from the log and the local repository.
To revert to the to the previous commit, run the git revert command along with the commit ID of the current commit.
How to remove initial commit from remote git? ›To delete commits from remote, you can use the git reset command if your commits are consecutive from the top or an interactive rebase otherwise. After you delete the commits locally, push those changes to the remote using the git push command with the force option.
How to remove git integration? ›Go to the Manage Git repositories page for your Jira instance (Jira dashboard menu Git ➜ Manage repositories). Click Actions ➜ Remove integration for the selected integration configuration.
How to remove a remote origin git? ›The git remote remove command removes a remote from a local repository. You can use the shorter git remote rm command too. The syntax for this command is: git remote rm <remote-url>. If you remove a remote accidentally, you will need to add it back manually using the git remote add command.
What is the remove command for git? ›The git rm command can be used to remove individual files or a collection of files. The primary function of git rm is to remove tracked files from the Git index. Additionally, git rm can be used to remove files from both the staging index and the working directory.