Maison Étudier Comment restaurer des fichiers et des dossiers individuels dans Git

Comment restaurer des fichiers et des dossiers individuels dans Git

par Frank
Comment restaurer des fichiers et des dossiers individuels dans Git

Introduction

Git est un excellent outil pour maintenir chaque version de votre base de code, et il est parfois nécessaire de remonter dans le temps et de restaurer d'anciennes versions de fichiers. Git peut annuler les modifications apportées à un seul fichier ou dossier, ainsi que retirer des validations complètes ou réinitialiser l'intégralité du référentiel.

Choisir entre revenir en arrière et réinitialiser

Lorsque vous « annulez » un commit, Git applique généralement un nouveau commit avec les modifications opposées, l'annulant essentiellement. C'est pratique si vous faites une erreur et avez besoin de "supprimer" un commit même s'il reste dans l'historique.

La procédure de réinitialisation du référentiel est quelque peu différente. Vous ne pouvez retirer qu'un seul commit à la fois, mais si vous exécutez un git reset, Git réinitialisera entièrement le référentiel au moment où ce commit a été créé. Ceci est fait pour diverses raisons, dont les plus courantes sont d'effacer les commits ou de corriger l'historique des branches.

Ces deux procédures affectent l'ensemble du référentiel, mais des commandes identiques peuvent être utilisées pour obtenir les mêmes effets sur des fichiers ou des dossiers individuels. Par exemple, exécuter git reset sur un seul le fichier le restaurerait dans l'état dans lequel il se trouvait lors de la création du commit. Ceci est avantageux si vous souhaitez simplement choisir une ancienne version du fichier dans votre historique Git.

Examen des anciennes versions de Git

The low-tech approach to restoring a file to its original state is rather simple—Github and most other Git servers maintain track of your file history, and you can simply click on a commit and choose “Browse Files” to see a snapshot of your repository from the past. You may then either télécharger le fichier ou copier le texte.

Ceci est particulièrement pratique si vous travaillez avec un grand nombre de fichiers de code et que vous souhaitez comparer des versions antérieures de routines que vous avez écrites. Dans ce scénario, vous ne voulez probablement pas tout inverser, juste une fonction. Sans toucher à la CLI Git, vous pouvez copier le code de cette fonction.

Restauration d'un fichier Git vers une ancienne version

Nous avons fait un commit dans ce référentiel de test qui a changé le README et ajouté un nouveau fichier. Nous voulons annuler les modifications README, mais nous ne voulons pas restaurer l'intégralité du référentiel au premier commit.

La réponse est de réinitialiser uniquement le README en téléchargeant une ancienne version de ce fichier. La commande checkout de Git peut accomplir diverses choses, comme changer de branche, bien qu'elle soit souvent utilisée pour télécharger des données en fonction d'un commit ou d'un ID de branche.

Pour restaurer un fichier vers une version antérieure, localisez l'ID de validation à partir duquel vous souhaitez le restaurer. Vous pouvez utiliser git log avec un seul fichier limité pour voir uniquement les modifications apportées à ce fichier :

git log LISEZMOI.md

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

git checkout 22710694b25d7ce5297559851beb7d3e4de811bb README.md

Cela modifiera le fichier, mais ne validera pas encore les modifications. Vous êtes libre d'apporter des modifications et de vous engager lorsque vous êtes prêt.

Dans ce cas, git checkout a marqué les modifications comme étant prêtes pour le prochain commit. Si vous ne souhaitez pas valider les modifications, vous pouvez le faire. Cela peut être pratique pour télécharger temporairement d'anciennes versions de fichiers sans utiliser Github.

Annulation des modifications apportées aux fichiers individuels

De même, vous pouvez utiliser git revert pour annuler les modifications apportées en un seul commit. Il n'y a aucun moyen de l'appliquer à un seul fichier, cependant si le commit impacte d'autres fichiers, il suffit de rejeter les modifications.

Use the —no-commit switch to enable modification of the “revert commit” that Git generates automatically.

git revenir de8564b131ca6a15a7e7c73f5ef156b119cc0b93

Cela vous permet d'apporter des modifications aux fichiers avant de terminer l'annulation. S'il y a des modifications indésirables qui ont été mises en scène, vous pouvez les effacer à l'aide de votre client ou d'un git checkout vide.

git checkout -- fichier

Tu pourrais aussi aimer

Navhow se consacre à enseigner aux gens du monde entier comment faire quoi que ce soit.

 

S'abonner

La meilleure newsletter pratique n'importe où

©2022 Navhow, Tous droits réservés