Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes | ||
technique:git:git_avancees [2020/04/26 00:30] – francoisa | technique:git:git_avancees [2020/09/23 23:15] – francoisa | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Git : fonctionnalités avancées ====== | ====== Git : fonctionnalités avancées ====== | ||
- | Pour pouvoir utiliser pleinement Git, il peut être utile de s' | + | Pour pouvoir utiliser pleinement Git, il peut être utile de s' |
===== 1. Création de branches ===== | ===== 1. Création de branches ===== | ||
Ligne 150: | Ligne 150: | ||
</ | </ | ||
- | Attention, il faudra | + | Attention, il faudra |
< | < | ||
Ligne 158: | Ligne 158: | ||
</ | </ | ||
+ | |||
+ | ===== Gestion d'un dépot avec authentification par clef SSH ===== | ||
+ | |||
+ | 1) Ajouter sa clef SSH publique dans son profil du dépot distant (github, framagit…) | ||
+ | |||
+ | 2) Définir par défaut l' | ||
+ | < | ||
+ | Host github.com | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | 3) définir pour le dépot git local que l' | ||
+ | < | ||
+ | [remote " | ||
+ | url = ssh:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Et c'est tout. Au prochain '' | ||
+ | ===== Gestion d'un fork d'un projet distant ===== | ||
+ | |||
+ | Cas fréquent : on veut contribuer à un projet existant : | ||
+ | |||
+ | - On forke le projet existant depuis la plateforme | ||
+ | - On clone ce projet localement sur son PC (git clone) | ||
+ | - On crée une nouvelle branche locale de développement (git branch nouvbranche && git checkout nouvbranche) | ||
+ | - on ajoute cette branche distante | ||
+ | - On modifie le code, on commite (git commit -m " | ||
+ | - On retourne sur la plateforme et on crée une PR Pull Request | ||
+ | |||
+ | **Problème** | ||
+ | |||
+ | Il faut définir un dépot upstream du dépot existant : | ||
+ | |||
+ | < | ||
+ | git remote add upstream git@github.com: | ||
+ | git fetch upstream # on se calle sur upstream et on affiche les branches disponibles | ||
+ | git checkout master # pour se mettre localement sur la branche master | ||
+ | git reset --hard upstream/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | On n' | ||
+ | |||
+ | < | ||
+ | git checkout -b nouvellebranche | ||
+ | |||
+ | </ | ||
+ | |||
+ | La fois suivante, pour remettre à jour : | ||
+ | |||
+ | < | ||
+ | git checkout master # pour se mettre localement sur la branche master | ||
+ | git reset --hard upstream/ | ||
+ | git fetch upstream | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Pour récupérer des commits d' | ||
+ | |||
+ | Se placer dans la branche qui contient les anciens commits : | ||
+ | |||
+ | < | ||
+ | git checkout anciennebranche | ||
+ | git log # pour afficher les commits du plus récent au plus ancien idcommit3, idcommit2, idcommit1 | ||
+ | git checkout master # pour repasser dans la branche master | ||
+ | git checkout -b nouvellebranche # pour créer et se placer dans la nouvelle branche | ||
+ | git cherry-pick idcommit1 idcommit2 idcommit3 | ||
+ | git log # pour afficher les commits récupérés | ||
+ | git branch --track master origin/ | ||
+ | |||
+ | </ | ||
+ | ===== Stocker ses accès (sur un serveur sécurisé) ===== | ||
+ | |||
+ | Editer le '' | ||
+ | |||
+ | < | ||
+ | [remote " | ||
+ | url = https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Ceci peut être définié au moment du clone : | ||
+ | |||
+ | < | ||
+ | git clone https://< | ||
+ | |||
+ | </ | ||
+ | |||
+ | On peut aussi stocker ces infos dans les credentials ('' | ||
+ | |||
+ | < | ||
+ | git config credential.helper store # pour les activer globalement ou | ||
+ | git config --global credential.helper store # pour les activer localement dans chaque dépot | ||
+ | |||
+ | </ | ||
+ | |||
+ | Et au pull ou push suivant, les infos de connexions sont mémorisées ! | ||