Varonis debuts trailblazing features for securing Salesforce. Learn More

Introduction de l'automatisation du moindre privilège pour Microsoft 365, Google Drive et Box

En savoir plus

Maîtriser la fusion dans Git : tutoriel sur les référentiels Git locaux et distants

Suivez ce tutoriel PowerShell Git sur la fusion dans Git, c'est-à-dire comment fusionner un référentiel local avec un référentiel distant.
Jeff Brown
6 minute de lecture
Dernière mise à jour 29 octobre 2021

Dans mon article précédent, « Comment annuler une validation dans Git » (un tutoriel PowerShell Git), j’ai montré comment vous pouviez utiliser un référentiel local PowerShell Git et exploiter les avantages du contrôle de code source local. Avec Git, vous pouvez créer des validations (« commits ») ou des instantanés de votre code et revenir aux versions précédentes. En général, lorsque vous travaillez avec Git et des référentiels de code, vous créez d’abord le référentiel distant, puis vous le téléchargez sur votre système local.

À l’inverse, si vous démarrez d’abord un projet sur votre système local et que vous devez ensuite vous connecter à un référentiel distant, il vous faudra fusionner les référentiels. Dans cet article, je vais vous montrer comment effectuer une fusion dans Git, c’est-à-dire prendre un référentiel local Git et le fusionner avec un référentiel distant de votre compte GitHub.

Pour suivre ce tutoriel PowerShell Git sur la fusion dans Git, vous aurez besoin des éléments 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."

1. Créer le référentiel local GitRepository

Tout d’abord, vous devez créer un référentiel local pour votre projet. Je vais utiliser PowerShell pour ce tutoriel, mais vous pouvez utiliser tout autre terminal à votre disposition. Sachez néanmoins que vous devrez utiliser des commandes équivalentes pour créer des dossiers et naviguer dans la structure des répertoires pour comprendre comment fusionner dans Git.

Commencez par créer un dossier pour stocker les fichiers de votre projet, puis sélectionnez ce répertoire dans la console. Initialisez ensuite le dossier en tant que référentiel Git à l’aide de la commande « git init ».

  1. New-Item my_project -ItemType Directory
  2. Set-Location .\my_project\
  3. git init

2. Créer la première validation Git

Une fois le référentiel local Git créé, vous devez ajouter des fichiers au projet. Je vais créer un script PowerShell qui affiche « Hello World! » sur la console, puis vérifier la sortie du script.

  1. New-Item -Name HelloWorld.ps1 -ItemType File
  2. Add-Content -Value ‘“Hello World!”’ -Path .\HelloWorld.ps1
  3. .\HelloWorld.ps1

capture d'écran montrant comment créer un script Powershell avant sa fusion dans Git

Le référentiel possède un fichier non suivi à utiliser pour créer la première validation. Vous pouvez afficher les fichiers non suivis en exécutant la commande « git status ». Vous pouvez ajouter le fichier à la zone de transit en utilisant la commande « git add » et en spécifiant le nom du fichier. Ensuite, créez une validation avec « git commit » en utilisant l’option –m pour ajouter un message à la validation.

  1. git status
  2. git add .\HelloWorld.ps1
  3. git commit -m “<commit message>”

capture d'écran de la création d'une validation initiale Git avant la fusion dans Git

3. Créer le référentiel GitHub

Bien que l’utilisation d’un référentiel local Git soit utile, l’objectif principal du contrôle du code source est de collaborer sur des projets avec d’autres personnes. Vous devez maintenant prendre le référentiel local Git et le placer dans un référentiel distant et centralisé, afin que d’autres personnes puissent collaborer au projet. Le stockage du code du projet dans un référentiel distant et centralisé permet à d’autres collaborateurs de copier le code dans leur système et d’y apporter des modifications.

S’il existe de nombreuses façons de disposer d’un référentiel central Git, une option facile est de le stocker dans GitHub. GitHub est une implémentation populaire de Git, qui propose des comptes gratuits pour l’hébergement des référentiels.

Sur votre page de profil GitHub, sélectionnez Repositories en haut, puis cliquez sur New.

capture d'écran montrant comment créer un nouveau référentiel GitHub dans Powershell

Sur l’écran Create a new repository, saisissez un nom de référentiel unique qui n’existe pas dans votre compte. Je vous conseille de lui donner le même nom que le projet dans votre système local ; ici, cela sera mon_projet. Ensuite, saisissez une description du projet, précisez si le projet est public ou privé, puis choisissez l’une des options pour initialiser des fichiers de projet additionnels. Puisque vous importez un référentiel existant, vous ne devriez pas avoir besoin de sélectionner des fichiers supplémentaires, car ils doivent normalement exister dans le référentiel local (si vous les créez). Une fois que vous avez configuré tous les paramètres, cliquez sur Create repository.

capture d'écran montrant comment configurer les options de référentiel dans Git avant la fusion dans Git

4. Envoyer un référentiel local Git existant

Une fois le nouveau référentiel Git créé, GitHub vous donne plusieurs options pour démarrer avec ce référentiel. Vous pouvez le copier sur votre système local, créer un nouveau référentiel sur votre système et le lier, ou importer du code à partir d’un autre référentiel.

En ce qui nous concerne, nous voulons pousser (« push ») un référentiel Git existant à partir de la ligne de commande. Nous avons déjà un référentiel local Git que nous voulons lier à notre nouveau référentiel distant sur GitHub, ceci afin d’y envoyer notre code. Cliquez sur l’icône « Copy » pour enregistrer cet extrait de code et l’exécuter sur notre terminal PowerShell.

capture d'écran montrant comment copier un extrait de code pour l'envoyer vers un référentiel Git existant

Avant d’exécuter le code dans mon terminal PowerShell, il faut savoir à quoi sert chaque commande, car elles sont toutes essentielles pour comprendre la fusion dans Git.

Git Remote Add Origin

  1. git remote add origin https://github.com/JeffBrownTech/my_project.git

Cette commande configurera le nouveau référentiel GitHub en tant que référentiel distant et en fera la source pour la suite. Lorsque d’autres collaborateurs apporteront des modifications au référentiel hébergé sur GitHub, vous pourrez par la suite tirer ces mises à jour vers votre système local. Vous pouvez vérifier le paramètre modifié en exécutant git remote -v pour vérifier que l’URL de l’origine correspond au référentiel distant.

  1. git remote -v

capture d'écran montrant comment ajouter une URL distante avant la fusion dans Git

Le nom de l’origine peut être tout ce que vous voulez ; cependant, dans le monde des committers, la connexion à distance du référentiel est habituellement nommée « origin ».

Git Branch

  1. git branch -M main

Cette commande oblige à renommer la branche locale « branche principale » (« main ») pour s’assurer qu’elle correspond au nom de la branche principale du référentiel GitHub. Cette étape peut ne pas être nécessaire, mais il est bon de l’exécuter pour vérifier que les noms des branches correspondent.

Enfin, nous devons envoyer notre référentiel local vers le référentiel distant GitHub à l’aide de la commande git push.

Git Push

  1. git push -u origin main

Ici, origin fait référence au référentiel distant que nous avons configuré précédemment, et main fait référence à la branche du référentiel local à copier vers le référentiel distant.

Comme c’est la première fois que nous envoyons du code dans le référentiel distant GitHub pour la branche principale, nous devons spécifier le paramètre -u, qui est mis pour –set-upstream. Définir la branche en amont (« upstream ») configurera la branche distante par défaut pour la branche locale actuelle. Cette relation est configurée dans la sortie de la commande d’envoi « push ».

capture d'écran montrant comment envoyer un référentiel local Git vers GitHub

5. Visualiser le référentiel GitHub mis à jour

De retour dans GitHub, actualisez la page du référentiel affichant actuellement les exemples de code, et vos fichiers locaux devraient maintenant s’afficher comme disponibles dans le référentiel. Dans le cas de mon projet, je peux voir le script HelloWorld.ps1 avec mon message de validation.

capture d'écran d'un référentiel GitHub mis à jour avec les fichiers du projet local

6. Fusionner les historiques non liés

Lors de la création du référentiel GitHub, vous avez la possibilité d’initialiser le référentiel avec plusieurs fichiers, comme un fichier README.md. Ce fichier est écrit en Markdown et affiche son contenu dans la page du référentiel. Il est souvent utilisé pour expliquer le projet ou fournir de la documentation sur la façon de l’utiliser.

Puisque j’allais importer un référentiel existant à partir de mon système local, il n’était pas nécessaire d’initialiser le référentiel avec ce fichier. Toutefois, examinons ce qui se passe si je crée le référentiel distant avec des fichiers et que j’ai besoin de le synchroniser avec mon référentiel local.

De retour dans GitHub, j’ai créé un nouveau référentiel nommé mon_projet_2 pour stocker mon deuxième projet PowerShell. J’ai coché la case pour inclure un fichier README.md lors de la configuration du référentiel. Voici à quoi ressemble ce nouveau référentiel de projet (notez le contenu du fichier README affiché) :

capture d'écran d'un référentiel GitHub initialisé avec un fichier README

Avant de revenir à mon terminal, j’ai besoin de l’URL de ce référentiel pour pouvoir l’ajouter comme origine dans mon référentiel local. Pour trouver l’URL, cliquez sur le bouton Code et copiez l’URL HTTPS.

capture d'écran d'une copie de l'URL d'un référentiel GitHub dans le cadre d'un tutoriel sur la fusion dans Git

Revenons maintenant à ma fenêtre PowerShell, dans laquelle j’ai déjà créé le référentiel local et effectué la première validation. Tout d’abord, je dois ajouter l’URL que je viens de copier en tant qu’origine nommée du référentiel source :

  1. git remote add origin https://github.com/JeffBrownTech/my_project.git
  2. git remote -v

Ensuite, je dois tirer le contenu du référentiel distant GitHub (c’est à dire le fichier README.md) vers mon système local. Je peux le faire en utilisant la commande « git pull » et en spécifiant le référentiel distant d’origine et la branche principale locale :

  1. git pull origin main

Cependant, cette commande entraînera une erreur fatale :

Fatal: refusing to merge unrelated histories

capture d'écran d'un message fatal dû à des historiques non liés dans Git dans le cadre d'un tutoriel sur la fusion dans Git

Étant donné que nous avons deux projets sans lien entre eux avec des historiques différents, Git refuse de les fusionner. Les deux projets possèdent des historiques de validation distincts, qui ne sont pas compatibles entre eux. Heureusement, nous pouvons forcer Git à fusionner les deux malgré les historiques non liés grâce au paramètre –allow-unrelated-histories, comme ceci :

  1. git pull origin main –allow-unrelated-histories

Le fichier README.md du référentiel distant GitHub est maintenant disponible dans mon projet local. De là, je peux modifier le fichier README.nd localement, valider les changements et les renvoyer vers GitHub.

capture d'écran montrant comment fusionner des projets non liés dans Git dans le cadre d'un tutoriel Powershell

Dans cet article, j’ai expliqué comment fusionner des référentiels dans Git en prenant un référentiel local de code et en le reliant à un référentiel distant GitHub. En plaçant votre code dans un référentiel hébergé à distance, d’autres personnes peuvent collaborer avec vous en envoyant leurs modifications vers le code du projet. Travailler avec Git et les référentiels est une compétence essentielle pour tout développeur ou administrateur qui doit collaborer sur un projet de codage ou le partager.

What you should do now

Below are three ways we can help you begin your journey to reducing data risk at your company:

  1. Schedule a demo session with us, where we can show you around, answer your questions, and help you see if Varonis is right for you.
  2. Download our free report and learn the risks associated with SaaS data exposure.
  3. Share this blog post with someone you know who'd enjoy reading it. Share it with them via email, LinkedIn, Reddit, or Facebook.
Testez Varonis gratuitement.
Un résumé détaillé des risques liés à la sécurité de vos données.
Stratégie claire vers une remédiation automatisée.
Déploiement rapide.
Keep reading
guide-sur-les-tableaux-powershell :-utilisation-et-création
Guide sur les tableaux PowerShell : utilisation et création
Comment utiliser au mieux les tableaux PowerShell : nous allons aborder les bases et découvrir comment les créer, les utiliser, et nous explorerons également des techniques plus avancées.
comment-installer-et-importer-le-module-active-directory-pour-powershell
Comment installer et importer le module Active Directory pour PowerShell
Le module Active Directory pour PowerShell est un outil puissant destiné à la gestion d’Active Directory. Découvrez comment installer et importer le module PowerShell dans ce tutoriel détaillé.
guide-de-portée-des-variables-dans-powershell-:-utilisation-de-la-portée-dans-les-scripts-et-les-modules
Guide de portée des variables dans PowerShell : Utilisation de la portée dans les scripts et les modules
La portée des variables dans PowerShell peut être source de confusion lors de l'écriture de scripts et de fonctions. Cet article traite des portées ou étendues (« scopes ») PowerShell en relation avec les scripts et les modules.
connexion-à-microsoft-365-à-l’aide-de-powershell-:-modules-azure-ad
Connexion à Microsoft 365 à l’aide de PowerShell : modules Azure AD
La connexion PowerShell à Microsoft 365 simplifie la gestion, améliore la productivité et permet d’accéder à des fonctionnalités cachées. Nous allons vous montrer comment procéder dans ce guide.