Comment restaurer des fichiers et des dossiers individuels vers d'anciennes versions dans Git

0
78

Git est un outil puissant pour suivre chaque version de votre base de code, et il est souvent nécessaire de regarder en arrière dans le temps et récupérer les anciennes versions des fichiers. Git peut annuler des validations entières ou réinitialiser l'intégralité du référentiel, mais il peut également annuler les modifications apportées à un seul fichier ou dossier.

Rétablir ou réinitialiser< /h2>

Habituellement, lorsque vous “revenez” un commit, Git applique un nouveau commit en appliquant les modifications opposées, l'annulant ainsi. Ceci est utile si vous faites une erreur et devez “supprimer” ce commit, bien qu'il soit toujours enregistré dans l'historique.

La réinitialisation du référentiel est un peu différente. Vous ne pouvez annuler qu'un seul commit à la fois, mais si vous effectuez une réinitialisation de git, Git modifiera complètement l'état du dépôt au moment où ce commit a été effectué. Ceci est fait pour de nombreuses raisons, généralement pour supprimer des commits ou corriger l'historique de la branche.

Ces deux opérations fonctionnent sur l'ensemble du référentiel, mais vous pouvez également utiliser des commandes similaires pour effectuer les mêmes actions sur des fichiers ou des dossiers individuels. Par exemple, l'utilisation de git reset sur un seul fichier rétablira ce fichier tel qu'il était au moment de la validation. Ceci est utile si vous souhaitez simplement sélectionner une ancienne version du fichier dans votre historique Git.

RELATED : Comment fonctionne Git Reset ? Explication des réinitialisations logicielles, matérielles et mixtes

Examiner les anciennes versions dans Git

La solution low-tech pour rétablir un fichier tel qu'il était est assez simple – Github et la plupart des autres serveurs Git gardent une trace de l'historique de vos fichiers, et vous pouvez simplement cliquer sur un commit et cliquer sur Parcourir Fichiers” pour afficher un instantané de votre référentiel de retour dans le temps. Vous pouvez ensuite télécharger le fichier ou copier le texte dessus.

Ceci est particulièrement utile si vous travaillez avec des fichiers de code volumineux et que vous souhaitez consulter les anciennes versions des fonctions que vous avez écrites. Vous ne voulez probablement pas revenir en arrière dans ce cas, juste la fonction unique. Vous pouvez copier le code de cette fonction sans toucher à la CLI Git.

Réinitialiser un fichier à une ancienne version dans Git

Dans ce référentiel de test, nous avons fait un commit qui a édité le README et ajouté un nouveau fichier. Nous souhaitons annuler les modifications apportées au fichier README, mais nous ne souhaitons pas réinitialiser l'intégralité du dépôt au commit initial.

La solution consiste à réinitialiser uniquement le README en extrayant une ancienne version de ce fichier. La commande checkout de Git fait beaucoup de choses, comme changer de branche, mais elle est essentiellement utilisée pour télécharger des fichiers avec un commit ou un ID de branche.

Pour réinitialiser un fichier à une ancienne version, vous devez trouver l'ID de validation à partir duquel vous souhaitez réinitialiser. Vous pouvez utiliser git log pour cela, limité à un seul fichier pour afficher uniquement les modifications apportées à ce fichier :

git log README.md

Copiez l'ID du commit, puis exécutez git checkout avec l'ID et le chemin du fichier :

git checkout 22710694b25d7ce5297559851beb7d3e4de811bb README.md

Cela modifiera le fichier, mais il ne validera pas les modifications pour l'instant. Vous êtes libre de le modifier et de le valider lorsque vous êtes prêt.

Dans cet exemple, git checkout a organisé les modifications pour le prochain commit. Si vous ne souhaitez pas les valider, vous êtes libre d'annuler les modifications. Cela peut être utile pour télécharger temporairement d'anciennes versions de fichiers sans utiliser Github.

Annuler les modifications apportées à des fichiers uniques

De même, si vous souhaitez annuler les modifications dans un seul commit, vous pouvez le faire avec git revert. Cependant, il n'y a aucun moyen de l'appliquer à un seul fichier, mais vous pouvez simplement ignorer les modifications si la validation affecte d'autres fichiers.

Utilisez l'indicateur –no-commit pour autoriser la modification du “annuler la validation” que Git crée automatiquement.

git revert de8564b131ca6a15a7e7c73f5ef156b119cc0b93

Cela vous permettra de modifier les fichiers avant de finaliser le retour. Si des modifications indésirables sont effectuées, vous pouvez les supprimer via votre client ou avec un git checkout vide.

git checkout — file

LIRE LA SUITE

  • › Test de la tablette Amazon Fire 7 (2022) : faible mais bon marché
  • › 10 excellentes fonctionnalités iPhone que vous devriez utiliser
  • › Pourquoi voulez-vous un Wi-Fi maillé, même si vous n'avez besoin que d'un seul routeur
  • &rsaquo ; Les 5 plus grands mythes sur Android
  • &rsaquo ; Le Samsung Galaxy Z Flip 4 a des mises à niveau internes, pas des modifications de conception
  • › Test du chargeur UGREEN Nexode 100 W : plus qu'assez de puissance