Que vous écriviez des scripts de manière isolée ou que vous travailliez en équipe, il est essentiel de pouvoir suivre les différentes versions de votre code. Il peut arriver que du code ajouté finisse par ne pas fonctionner, et la possibilité d’annuler ces modifications (sans supprimer manuellement le code) peut sauver votre projet. Dans cet article, je vais vous expliquer comment utiliser la commande de réinitialisation Git
reset
pour revenir à une validation (« commit ») précédente de votre code dans le système de contrôle de source Git, et j’aborderai les sujets suivants :
Accédez à une série de cours sur l’automatisation des tâches Active Directory à l'aide de PowerShell et obtenez 3 crédits CPE (cours en anglais)
"PowerShell peut vous aider à automatiser des choses allant de la création de rapports AD à la création de boîtes aux lettres Exchange... et même à contrôler votre système d'arrosage."
Connaissances préalables requises : Comment utiliser Git ?
Le client Git doit être installé sur votre système. Vous pouvez télécharger le client ici, et un guide d’installation est disponible ici. Le client Git permet d’exécuter des commandes Git à partir du terminal. Vous aurez également besoin d’un fichier à modifier et pour lequel vous suivrez les modifications. Dans cet article, j’utilise un script PowerShell, mais vous pouvez utiliser le script que vous souhaitez.
Qu’est-ce que Git et que sont les validations Git ?
![vue d'ensemble de ce que signifie Git et les validations dans Git](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/Git-And-Git-Commits-1.png?width=1240&height=756&name=Git-And-Git-Commits-1.png)
Git est un outil répandu de contrôle de code source qui assure le suivi des changements à l’aide de validations. Créer une validation revient à sauvegarder une version d’un fichier ou d’un groupe de fichiers. La validation assure le suivi des versions du fichier grâce à l’identifiant unique (ou SHA ou hachage) qui lui est associé. Cet identifiant unique permet de revenir à des versions de fichiers précédemment validées dans le référentiel.
Un workflow typique comprend les tâches suivantes :
-
- Extraction des fichiers du référentiel distant.
- Modification des fichiers locaux.
- Validation des changements.
- Envoi (« push ») des nouveaux fichiers vers le référentiel.
Toutefois, si vous ne disposez pas d’un référentiel distant centralisé ou si le fait de pousser/tirer/fusionner du code vous met mal à l’aise, vous pouvez toujours exploiter Git en l’utilisant sur votre système local. Vous pouvez valider des changements dans votre code et revenir sur ces changements pour vous familiariser avec les validations.
1. Configuration d’un référentiel local Git
La première commande pour démarrer est Git init
. Cette commande initialise le dossier actuel en tant que référentiel Git. Dans cet exemple, j’initialise le dossier de projet en tant que référentiel Git.
![capture d'écran d'une commande Git init dans PowerShell](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitInit-1.png?width=777&height=60&name=gitInit-1.png)
La commande ajoute un dossier caché nommé « .Git » qui assure le suivi de la branche active actuelle, des fichiers de configuration, des alias, et d’autres données.
![capture d'écran d'un dossier créé avec la commande Git init](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitinitfolder-1.png?width=535&height=144&name=gitinitfolder-1.png)
Ensuite, il me faut un fichier de travail afin de suivre des modifications. J’ai un fichier de script PowerShell appelé « myScript.ps1 ». Le script contient une boucle for qui itère cinq fois et sort à l’écran. Cette première boucle sera ma boucle extérieure. La finalité du code n’a pas d’importance en elle-même, je cherche simplement à montrer des modifications de code pour un script simple.
![capture d'écran d'un fichier script PowerShell](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/script1-1.png?width=717&height=366&name=script1-1.png)
L’étape suivante consiste à afficher l’état du référentiel en exécutant Git status
. L’état indiquera sur quelle branche je suis (pour l’instant, sachez simplement que je suis sur la branche « Maître »). Il montrera également tous les fichiers nouveaux ou modifiés à partir de la dernière validation en les affichant en rouge.
![capture d'écran montrant comment exécuter Git status](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitStatusUntracked-1.png?width=1070&height=328&name=gitStatusUntracked-1.png)
2. Suivi et validation de fichiers dans Git
Si je veux suivre les fichiers pour valider leurs modifications, je dois les ajouter à la zone de transit à l’aide de la commande Git add
. Cette commande peut spécifier un ou plusieurs fichiers à ajouter à la zone de transit. Dans le cas présent, je n’ai qu’un seul fichier, et je l’ajoute en spécifiant son nom. Je vérifie ensuite l’état du référentiel pour visualiser le script dans la zone de transit.
- Git add myScript.ps1
- Git status
![capture d'écran montrant comment utiliser la commande Git add dans PowerShell](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitAdd-1.png?width=650&height=299&name=gitAdd-1.png)
Maintenant que je suis le fichier dans la zone de transit, je dois créer une validation de l’état du référentiel. J’utilise la commande Git commit
avec l’option -m
pour attribuer un message à la validation. Le message de validation doit être court mais descriptif pour indiquer les modifications apportées au code. Une fois la validation terminée, j’exécute un autre Git status
pour vérifier qu’aucun autre fichier ne se trouve dans la zone de transit ou n’a été modifié depuis la dernière validation.
- Git commit -m “first version of script – outer loop only”
- Git status
![](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitCommit-1-1.png?width=685&height=165&name=gitCommit-1-1.png)
3. Validation des changements additionnels dans Git
Maintenant que j’ai mon premier message de validation dans mon référentiel, je dois ajouter une amélioration à mon code. J’ajoute une autre boucle à l’intérieur de la boucle extérieure, que j’appellerai la boucle interne.
![capture d'écran montrant comment suivre et valider des fichiers dans Git à l'aide de PowerShell](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/scriptAddedCode-1-1.png?width=624&height=437&name=scriptAddedCode-1-1.png)
Si j’exécute à nouveau Git status
, je verrai les mêmes résultats que précédemment. Le fichier apparaîtra comme étant non suivi car le fichier script a été modifié depuis la dernière validation. Je vais répéter le workflow de commandes pour ajouter le fichier et le valider. Mon message de validation montrera que j’ai ajouté la boucle interne.
- Git status
- Git add myScript.ps1
- Git commit -m “Added inner loop”
![capture d'écran d'un message de validation Git](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitSecondWorkflow-1.png?width=1062&height=390&name=gitSecondWorkflow-1.png)
4. Gestion des validations Git
Maintenant que le référentiel contient quelques validations, je peux me tourner vers la commande Git log
. Cette commande affiche les validations précédentes ainsi que les messages de validation. Chaque validation possède une valeur de hachage unique pour l’identifier. Dans cet exemple, la dernière validation est celle où j’ai ajouté la boucle interne, et elle est indiquée par le pointeur HEAD.
![capture d'écran montrant comment gérer les validations Git dans PowerShell](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitLog-1-1.png?width=618&height=252&name=gitLog-1-1.png)
Supposons maintenant que je ne souhaite pas conserver mon dernier changement et que je souhaite revenir à une version antérieure du script. Je pourrais supprimer manuellement la boucle interne, car ce script est suffisamment court pour le faire. Toutefois, cela pourrait poser problème pour les projets de codage plus importants. Je risquerais de supprimer trop de code, ou pas assez, et ainsi créer de nouveaux problèmes.
Au lieu de cela, je peux utiliser les sept premiers caractères de la valeur de hachage du journal des validations pour revenir à une version précédente du référentiel. Pour cela, j’utilise la commande Git reset
tout en indiquant le hachage du journal des validations :
![capture d'écran montrant comment utiliser la commande Git reset dans PowerShell](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitReset-1.png?width=513&height=91&name=gitReset-1.png)
Cette commande réattribue HEAD à une validation spécifique. La capture d’écran montre que myScript.ps1
est de retour dans la zone de transit avec les changements effectués à partir de la validation a6dd1c2
. Si j’exécute à nouveau Git log
, HEAD est revenu à la validation précédente, et la validation de l’ajout d’une boucle interne est supprimée.
![capture d'écran montrant comment utiliser Git pour revenir à une validation précédente](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitLogRevised-1.png?width=900&height=178&name=gitLogRevised-1.png)
Pour revenir au fichier, je dois extraire le fichier de la validation à l’aide de la commande Git checkout
. Une fois le fichier extrait, je peux afficher son contenu, qui révèle que seule la boucle externe est présente. J’exécute ensuite Git status pour montrer que l’arbre actuel n’a pas de modifications à suivre.
![capture d'écran de la procédure d'extraction d'un fichier à partir d'une validation avec la commande Git checkout](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/gitcheckout-1-1.png?width=957&height=105&name=gitcheckout-1-1.png)
Glossaire des commandes Git
Voici une liste des commandes PowerShell Git que j’ai utilisées et leurs fonctions respectives :
![glossaire des commandes Git PowerShell courantes](https://info.varonis.com/hs-fs/hubfs/Imported_Blog_Media/PowerShell-Git-Commands-1.png?width=1240&height=949&name=PowerShell-Git-Commands-1.png)
Si vous débutez dans le contrôle de version et n’êtes pas suffisamment sûr de vous pour travailler avec des référentiels distants, vous pouvez travailler avec un référentiel local et bénéficier des mêmes avantages. Vous pouvez utiliser ces commandes Git fondamentales afin de vous familiariser avec le processus d’utilisation de Git pour le contrôle de version.
Jeff Brown
Jeff Brown est un ingénieur Cloud spécialisé dans les technologies Microsoft telles qu'Office 365, Teams, Azure et PowerShell. Vous pouvez trouver plus de contenu sur https://jeffbrown.tech.
Comment annuler une validation dans Git (Tutoriel PowerShell Git)
Contents
Que vous écriviez des scripts de manière isolée ou que vous travailliez en équipe, il est essentiel de pouvoir suivre les différentes versions de votre code. Il peut arriver que du code ajouté finisse par ne pas fonctionner, et la possibilité d’annuler ces modifications (sans supprimer manuellement le code) peut sauver votre projet. Dans cet article, je vais vous expliquer comment utiliser la commande de réinitialisation
Git
reset
pour revenir à une validation (« commit ») précédente de votre code dans le système de contrôle de source Git, et j’aborderai les sujets suivants :Accédez à une série de cours sur l’automatisation des tâches Active Directory à l'aide de PowerShell et obtenez 3 crédits CPE (cours en anglais)
Connaissances préalables requises : Comment utiliser Git ?
Le client Git doit être installé sur votre système. Vous pouvez télécharger le client ici, et un guide d’installation est disponible ici. Le client Git permet d’exécuter des commandes Git à partir du terminal. Vous aurez également besoin d’un fichier à modifier et pour lequel vous suivrez les modifications. Dans cet article, j’utilise un script PowerShell, mais vous pouvez utiliser le script que vous souhaitez.
Qu’est-ce que Git et que sont les validations Git ?
Git est un outil répandu de contrôle de code source qui assure le suivi des changements à l’aide de validations. Créer une validation revient à sauvegarder une version d’un fichier ou d’un groupe de fichiers. La validation assure le suivi des versions du fichier grâce à l’identifiant unique (ou SHA ou hachage) qui lui est associé. Cet identifiant unique permet de revenir à des versions de fichiers précédemment validées dans le référentiel.
Un workflow typique comprend les tâches suivantes :
Toutefois, si vous ne disposez pas d’un référentiel distant centralisé ou si le fait de pousser/tirer/fusionner du code vous met mal à l’aise, vous pouvez toujours exploiter Git en l’utilisant sur votre système local. Vous pouvez valider des changements dans votre code et revenir sur ces changements pour vous familiariser avec les validations.
1. Configuration d’un référentiel local Git
La première commande pour démarrer est
Git init
. Cette commande initialise le dossier actuel en tant que référentiel Git. Dans cet exemple, j’initialise le dossier de projet en tant que référentiel Git.La commande ajoute un dossier caché nommé « .Git » qui assure le suivi de la branche active actuelle, des fichiers de configuration, des alias, et d’autres données.
Ensuite, il me faut un fichier de travail afin de suivre des modifications. J’ai un fichier de script PowerShell appelé « myScript.ps1 ». Le script contient une boucle for qui itère cinq fois et sort à l’écran. Cette première boucle sera ma boucle extérieure. La finalité du code n’a pas d’importance en elle-même, je cherche simplement à montrer des modifications de code pour un script simple.
L’étape suivante consiste à afficher l’état du référentiel en exécutant
Git status
. L’état indiquera sur quelle branche je suis (pour l’instant, sachez simplement que je suis sur la branche « Maître »). Il montrera également tous les fichiers nouveaux ou modifiés à partir de la dernière validation en les affichant en rouge.2. Suivi et validation de fichiers dans Git
Si je veux suivre les fichiers pour valider leurs modifications, je dois les ajouter à la zone de transit à l’aide de la commande
Git add
. Cette commande peut spécifier un ou plusieurs fichiers à ajouter à la zone de transit. Dans le cas présent, je n’ai qu’un seul fichier, et je l’ajoute en spécifiant son nom. Je vérifie ensuite l’état du référentiel pour visualiser le script dans la zone de transit.Maintenant que je suis le fichier dans la zone de transit, je dois créer une validation de l’état du référentiel. J’utilise la commande
Git commit
avec l’option-m
pour attribuer un message à la validation. Le message de validation doit être court mais descriptif pour indiquer les modifications apportées au code. Une fois la validation terminée, j’exécute un autreGit status
pour vérifier qu’aucun autre fichier ne se trouve dans la zone de transit ou n’a été modifié depuis la dernière validation.3. Validation des changements additionnels dans Git
Maintenant que j’ai mon premier message de validation dans mon référentiel, je dois ajouter une amélioration à mon code. J’ajoute une autre boucle à l’intérieur de la boucle extérieure, que j’appellerai la boucle interne.
Si j’exécute à nouveau
Git status
, je verrai les mêmes résultats que précédemment. Le fichier apparaîtra comme étant non suivi car le fichier script a été modifié depuis la dernière validation. Je vais répéter le workflow de commandes pour ajouter le fichier et le valider. Mon message de validation montrera que j’ai ajouté la boucle interne.4. Gestion des validations Git
Maintenant que le référentiel contient quelques validations, je peux me tourner vers la commande
Git log
. Cette commande affiche les validations précédentes ainsi que les messages de validation. Chaque validation possède une valeur de hachage unique pour l’identifier. Dans cet exemple, la dernière validation est celle où j’ai ajouté la boucle interne, et elle est indiquée par le pointeur HEAD.Supposons maintenant que je ne souhaite pas conserver mon dernier changement et que je souhaite revenir à une version antérieure du script. Je pourrais supprimer manuellement la boucle interne, car ce script est suffisamment court pour le faire. Toutefois, cela pourrait poser problème pour les projets de codage plus importants. Je risquerais de supprimer trop de code, ou pas assez, et ainsi créer de nouveaux problèmes.
Au lieu de cela, je peux utiliser les sept premiers caractères de la valeur de hachage du journal des validations pour revenir à une version précédente du référentiel. Pour cela, j’utilise la commande
Git reset
tout en indiquant le hachage du journal des validations :Cette commande réattribue HEAD à une validation spécifique. La capture d’écran montre que
myScript.ps1
est de retour dans la zone de transit avec les changements effectués à partir de la validationa6dd1c2
. Si j’exécute à nouveauGit log
, HEAD est revenu à la validation précédente, et la validation de l’ajout d’une boucle interne est supprimée.Pour revenir au fichier, je dois extraire le fichier de la validation à l’aide de la commande
Git checkout
. Une fois le fichier extrait, je peux afficher son contenu, qui révèle que seule la boucle externe est présente. J’exécute ensuite Git status pour montrer que l’arbre actuel n’a pas de modifications à suivre.Glossaire des commandes Git
Voici une liste des commandes PowerShell Git que j’ai utilisées et leurs fonctions respectives :
Si vous débutez dans le contrôle de version et n’êtes pas suffisamment sûr de vous pour travailler avec des référentiels distants, vous pouvez travailler avec un référentiel local et bénéficier des mêmes avantages. Vous pouvez utiliser ces commandes Git fondamentales afin de vous familiariser avec le processus d’utilisation de Git pour le contrôle de version.
Que dois-je faire maintenant ?
Vous trouverez ci-dessous trois solutions pour poursuivre vos efforts visant à réduire les risques liés aux données dans votre entreprise:
Planifiez une démonstration avec nous pour voir Varonis en action. Nous personnaliserons la session en fonction des besoins de votre organisation en matière de sécurité des données et répondrons à vos questions.
Consultez un exemple de notre évaluation des risques liés aux données et découvrez les risques qui pourraient subsister dans votre environnement. Cette évaluation est gratuite et vous montre clairement comment procéder à une remédiation automatisée.
Suivez-nous sur LinkedIn, YouTube et X (Twitter) for pour obtenir des informations sur tous les aspects de la sécurité des données, y compris la DSPM, la détection des menaces, la sécurité de l’IA et plus encore.
Essayez Varonis gratuitement.
Se déploie en quelques minutes.
Keep reading
Varonis tackles hundreds of use cases, making it the ultimate platform to stop data breaches and ensure compliance.