Github : Différence entre versions

De DiouxX's Wiki
Aller à : navigation, rechercher
(Page créée avec « {{ Introduction | 1=Un billet qui me sert d’aide mémoire sur l’utilisation « git » et de mon compte sur « GitHub ». }} == Git en quelques mots == Git est un lo... »)
 
 
(3 révisions intermédiaires par le même utilisateur non affichées)
Ligne 15 : Ligne 15 :
 
J’utilise « GitHub » pour héberger mes différents fichiers. La création du compte « GitHub » n’est pas détaillée dans ce billet. Cette étape ne présente aucune difficulté et n’est réalisée qu’une seule et unique fois. Seule la procédure d’échange de clefs est détaillée ici.
 
J’utilise « GitHub » pour héberger mes différents fichiers. La création du compte « GitHub » n’est pas détaillée dans ce billet. Cette étape ne présente aucune difficulté et n’est réalisée qu’une seule et unique fois. Seule la procédure d’échange de clefs est détaillée ici.
  
=== Générer un couple de clefs privée / publique ===
+
=== Générer un couple de clefs privée/publique ===
  
 
La génération des clefs privées et publiques se fait en tapant la commande suivante :
 
La génération des clefs privées et publiques se fait en tapant la commande suivante :
Ligne 39 : Ligne 39 :
  
 
Dans un terminal, taper les commandes suivantes (cf. doc github) :
 
Dans un terminal, taper les commandes suivantes (cf. doc github) :
 
+
<br>
ssh -T git@github.com
+
{{ Console | ssh -T git@github.com }}
 +
<br>
  
 
La sortie doit ressembler au texte ci-dessous :
 
La sortie doit ressembler au texte ci-dessous :
 
+
<pre>
 
Hi yopland! You've successfully authenticated, but GitHub does not provide shell access.
 
Hi yopland! You've successfully authenticated, but GitHub does not provide shell access.
 +
</pre>
  
 
Si le message fait référence à votre login, c’est gagné.
 
Si le message fait référence à votre login, c’est gagné.
Gestion des clefs avec « ssh-agent »
+
 
 +
=== Gestion des clefs avec « ssh-agent » ===
  
 
L’utilisation d’un agent, évite d’avoir à retaper la « passphrase » à chaque fois que l’on sollicite l’utilisation de la clé privée. Les clefs et les « passphrases » associées sont stockées en mémoire par l’agent et restituées selon les besoins.
 
L’utilisation d’un agent, évite d’avoir à retaper la « passphrase » à chaque fois que l’on sollicite l’utilisation de la clé privée. Les clefs et les « passphrases » associées sont stockées en mémoire par l’agent et restituées selon les besoins.
  
 
Taper la commande suivante et renseigner la « passphrase » :
 
Taper la commande suivante et renseigner la « passphrase » :
 
+
<br>
ssh-add
+
{{ Console | ssh-add }}
 
+
<br>
 
Tester le bon fonctionnement en essayant de se connecter sur le serveur. Il ne devrait pas être nécessaire de redonner la « passphrase ».
 
Tester le bon fonctionnement en essayant de se connecter sur le serveur. Il ne devrait pas être nécessaire de redonner la « passphrase ».
 
+
<br>
ssh -T git@github.com
+
{{ Console | ssh -T git@github.com }}
 
+
<br>
 
Pour lister les clefs chargées par l’agent :
 
Pour lister les clefs chargées par l’agent :
 
+
<br>
ssh-add -l
+
{{ Console | ssh-add -l }}
 
+
<br>
 
Pour supprimer de l’agent la clef stockée dans « ~/.ssh/id_rsa »  :
 
Pour supprimer de l’agent la clef stockée dans « ~/.ssh/id_rsa »  :
 +
<br>
 +
{{ Console | ssh-add -d ~/.ssh/id_rsa }}
 +
<br>
  
ssh-add -d ~/.ssh/id_rsa
+
== Commandes principales ==
 
+
=== Dépôt local ===
Commandes principales
+
==== Initialiser un dépôt git en local ====
Dépôt local
+
<br>
Initialiser un dépôt git en local
+
{{ Console | git init }}
 
+
<br>
git init
+
==== Lister les fichiers gérés par git ====
 
+
<br>
Lister les fichiers gérés par git
+
{{ Console | git status }}
 
+
<br>
git status
+
==== Ajouter un ou des fichiers au dépôt local ====
 
+
<pre>
Ajouter un ou des fichiers au dépôt local
 
 
 
 
git add fichier
 
git add fichier
 
git add '*.txt'
 
git add '*.txt'
 +
git add .
 +
</pre>
  
Renseigner son identité
+
==== Renseigner son identité ====
  
 
Pour suivre les différentes modifications sur le serveur distant, il est nécessaire de renseigner son identité sur son dépôt.
 
Pour suivre les différentes modifications sur le serveur distant, il est nécessaire de renseigner son identité sur son dépôt.
Ligne 88 : Ligne 94 :
 
Pour effectuer cette déclaration de manière globale (valable pour tous les dépôt locaux), taper les lignes suivantes :
 
Pour effectuer cette déclaration de manière globale (valable pour tous les dépôt locaux), taper les lignes suivantes :
  
 +
<pre>
 
git config --global user.email "you@example.com"
 
git config --global user.email "you@example.com"
 
git config --global user.name "Your Name"
 
git config --global user.name "Your Name"
 +
</pre>
  
 
Pour effectuer cette déclaration uniquement pour le dépôt en cours, taper les lignes suivantes :
 
Pour effectuer cette déclaration uniquement pour le dépôt en cours, taper les lignes suivantes :
  
 +
<pre>
 
git config user.email "you@example.com"
 
git config user.email "you@example.com"
 
git config user.name "Your Name"
 
git config user.name "Your Name"
 +
</pre>
  
Pousser les modifications effectuées vers le dépôt local (commit)
+
==== Pousser les modifications effectuées vers le dépôt local (commit) ====
 +
<br>
 +
{{ Console | git commit -m "message" }}
 +
<br>
 +
==== Suivre les différentes actions ====
 +
<br>
 +
{{ Console | git log }}
 +
<br>
  
git commit -m "message"
+
=== Création d’un dépôt sur github ===
 
 
Suivre les différentes actions
 
 
 
git log
 
 
 
Création d’un dépôt sur github
 
  
 
Afin de recevoir les différents fichiers de ce billet, je me suis créé un dépôt « try_git ».  Cette étape se fait via l’interface d’administration de « GitHub ».
 
Afin de recevoir les différents fichiers de ce billet, je me suis créé un dépôt « try_git ».  Cette étape se fait via l’interface d’administration de « GitHub ».
  
 
Afin d’héberger différents projets, il est tout à fait possible de créer plusieurs dépôt sur un même compte.
 
Afin d’héberger différents projets, il est tout à fait possible de créer plusieurs dépôt sur un même compte.
Dépôt distant
+
 
Déclarer un dépôt distant
+
==== Déclarer un dépôt distant ====
  
 
Afin d’éviter d’avoir à saisir l’URL complète du dépôt, il est possible de créer un alias.
 
Afin d’éviter d’avoir à saisir l’URL complète du dépôt, il est possible de créer un alias.
  
     mon dépôt distant est hébergé sur « github » ;
+
     * mon dépôt distant est hébergé sur « github » ;
     pour les tests le nom de mon dépôt distant est « try_git » ;
+
     * pour les tests le nom de mon dépôt distant est « try_git » ;
     le nom de mon compte est « yopland » ;
+
     * le nom de mon compte est « DiouxX » ;
     la référence « locale » au dépôt distant est « origin ».
+
     * la référence « locale » au dépôt distant est « origin ».
 +
<br>
 +
{{ Console | git remote add origin git@github.com:DiouxX/try_git.git}}
 +
<br>
 +
Il est maintenant possible d’utiliser « origin » en lieu et place de l’URL complète.
 +
<br>
 +
{{ Note | le nom origin est utilis& par convention. On peut bien évidemment le remplacer par n'importe quel nom/alias }}
 +
<br>
  
git remote add origin git@github.com:yopland/try_git.git
+
==== Dépot distant avec port SSH différent ====
  
Il est maintenant possible d’utiliser « origin » en lieu et place de l’URL complète.
+
Si le dépôt distant utilise un port SSH différent de celui par défaut, il faut créer ou modifier le fichier {{ File | .ssh/config}} en y ajoutant les paramètres suivants :
Pousser les modifications locales vers le dépôt distant
+
<br>
 +
<pre>
 +
Hostname git.domaine.be
 +
Port lePortSSH
 +
</pre>
  
    nom sous lequel est référencé le dépôt distant : origin
+
==== Pousser les modifications locales vers le dépôt distant ====
    branche utilisée : master
 
    option « -u » : permet de sauvegarder les paramètres et ainsi ne pas avoir à les saisir à nouveau lors de la prochaine commande
 
  
git push -u origin master
+
    * nom sous lequel est référencé le dépôt distant : origin
 +
    * branche utilisée : master
 +
    * option « -u » : permet de sauvegarder les paramètres et ainsi ne pas avoir à les saisir à nouveau lors de la prochaine commande
 +
<br>
 +
{{ Console | git push -u origin master }}
 +
<br>
  
Récupérer les modifications effectuées
+
==== Récupérer les modifications effectuées ====
  
 
Il est possible de récupérer les modifications effectuées sur le dépôt distant de deux manières différentes :
 
Il est possible de récupérer les modifications effectuées sur le dépôt distant de deux manières différentes :
  
     en effectuant une fusion directement sur l’espace de travail ;
+
     * en effectuant une fusion directement sur l’espace de travail ;
     en stockant les données sur une nouvelle branche.
+
     * en stockant les données sur une nouvelle branche.
  
 
Récupérer les modifications effectuées sur le dépôt distant et fusionner les modifications sur notre espace de travail
 
Récupérer les modifications effectuées sur le dépôt distant et fusionner les modifications sur notre espace de travail
 
+
<br>
git pull origin master
+
{{ Console | git pull origin master }}
 +
<br>
  
 
Récupérer les modifications effectuées sur le dépôt distant sans effectuer de fusion (les données seront stockées sous leur propre branche)
 
Récupérer les modifications effectuées sur le dépôt distant sans effectuer de fusion (les données seront stockées sous leur propre branche)
 +
<br>
 +
{{ Console | git fetch origin }}
 +
<br>
  
<code>git fetch origin</code>
+
==== Lister les dépôts distants ====
  
Lister les dépôts distants
+
    * l’option « -v » permet de visualiser les urls associées à chaque nom court;
 +
<br>
 +
{{ Console | git remote -v }}
 +
<br>
  
    l’option « -v » permet de visualiser les urls associées à chaque nom court;
+
=== Gestion des branches ===
 +
==== Création d'une branche ====
  
git remote -v
+
Pour créer une branche et y basculer tout de suite, vous pouvez lancer la commande git checkout avec l'option -b :
 +
<br>
 +
{{ Console | git checkout -b newbranch<br>Switched to a new branch "newbranch"}}
  
Autres commandes
+
C'est un raccourci pour :
Récupérer les différences entre la copie locale et le dépôt
+
<br>
 +
{{ Console | $ git branch  newbranch<br>$ git checkout newbranch }}
 +
<br>
  
git diff HEAD
+
==== Switcher de branche ====
  
Récupérer les dernières modifications que l’on vient d’effectuer
+
Pour l'instant, vous avez validé tous vos changements dans la branche newbranch et vous pouvez donc rebasculer vers la branche master :
 +
<br>
 +
{{ Console | $ git checkout master<br>Switched to branch "master"}}
 +
<br>
  
git diff --staged
+
==== Merge avec la branche master ====
  
Cloner un dépot
+
Vous pouvez lancer vos tests, vous assurer que la correction est efficace et la fusionner dans la branche master pour la déployer en production. Vous réalisez ceci au moyen de la commande git merge :
 +
<br>
 +
{{ Console | git checkout master <br> $ git merge correctif }}
 +
<br>
  
Cloner un dépôt entier :
+
==== Suppression d'une branche ====
 +
<br>
 +
{{ Console | git branch -d newbranch }}
 +
<br>
  
git clone url
 
  
Cloner une branche :
 
  
git clone -b branche url
+
=== Autres commandes ===
 +
==== Récupérer les différences entre la copie locale et le dépôt ====
 +
<br>
 +
{{ Console | git diff HEAD }}
 +
<br>
  
Références
+
==== Récupérer les dernières modifications que l’on vient d’effectuer ====
 +
<br>
 +
{{ Console | git diff --staged }}
 +
<br>
  
    documentation git : http://git-scm.com/
+
==== Cloner un dépot ====
    un livre en français : http://git-scm.com/book/fr/v1
 
    un très bon tutoriel : https://try.github.io/levels/1/challenges/1
 
    le site de gitub : https://github.com
 
    utilisation de ssh : http://www.linux-france.org/prj/edu/archinet/systeme/ch13s03.html
 
  
Related posts:
+
Cloner un dépôt entier :
 +
<br>
 +
{{ Console | git clone url }}
 +
<br>
  
    Aide mémoire sur les commandes associées à Systemd
+
Cloner une branche :
    XML : Manipulation avec xmllint et trang
+
<br>
    Lancer Open VPN sous SystemD
+
{{ Console | git clone -b branche url }}
    Réduction automatique du bruit avec « Darktable » – Partie 1
+
<br>
 
 
aide mémoire gestionnaire de version git planet-libre tutoriel
 
 
 
Did you like this article? Share it with your friends!
 
One Response to "Aide mémoire git"
 
 
 
    WilliamLymn dit :
 
    26 mars 2015 à 19 h 53 min
 
 
 
    Enjoy your blog )
 
    http://anmdcf7i.com my blog
 
    Répondre
 
 
 
Laisser un commentaire
 
 
 
Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *
 
 
 
Nom *
 
 
 
Adresse de contact *
 
 
 
Site web
 
  
Commentaire
+
== Références ==
  
Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
+
    * http://carnetdevol.shost.ca/wordpress/aide-memoire-git/
 +
    * documentation git : http://git-scm.com/
 +
    * un livre en français : http://git-scm.com/book/fr/v1
 +
    * un très bon tutoriel : https://try.github.io/levels/1/challenges/1
 +
    * le site de gitub : https://github.com
 +
    * utilisation de ssh : http://www.linux-france.org/prj/edu/archinet/systeme/ch13s03.html

Version actuelle datée du 23 avril 2019 à 10:08

Un billet qui me sert d’aide mémoire sur l’utilisation « git » et de mon compte sur « GitHub ».

Git en quelques mots

Git est un logiciel de gestion de version qui permet de gérer une arborescence de fichiers tout en gardant un historique complet des différentes modifications effectuées. De ce point de vue, il offre les mêmes fonctionnalités que CVS ou Subversion.

Git se caractérise principalement par son aspect décentralisé. En effet, git utilise à la fois un dépôt local et un dépôt distant. Pour travailler, il faut dans un premier temps « forker » un dépôt distant. Ceci permet de récupérer l’ensemble des fichiers présents sur le dépôt distant ainsi que l’historique associé.

Une fois le dépôt distant « forker », on peut travailler en local tout comme on le ferait avec un gestionnaire de version classique. Il est ensuite possible de proposer sa contribution au dépôt distant (pull request).

Ce mode de fonctionnement permet de profiter d’un gestionnaire de version pour effectuer son développement en local et de proposer un ensemble de modifications cohérentes et fonctionnelles sur le dépôt distant.

Préparer son espace de travail sous « GitHub »

J’utilise « GitHub » pour héberger mes différents fichiers. La création du compte « GitHub » n’est pas détaillée dans ce billet. Cette étape ne présente aucune difficulté et n’est réalisée qu’une seule et unique fois. Seule la procédure d’échange de clefs est détaillée ici.

Générer un couple de clefs privée/publique

La génération des clefs privées et publiques se fait en tapant la commande suivante :


Konsole.png
[user@ordi ~]$ ssh-keygen -t rsa


Lors de la génération, il vous sera demandé une « passphrase ». Il faut bien noter cette dernière car elle sera à nouveau demandée lors de la connexion à « GitHub ».

Si vous avez laissé les options par défaut, la clef se trouve dans le fichier « ~/.ssh/id_rsa.pub ».

Exporter sa clef vers « GitHub »

Suivre les étapes suivantes :

   * se connecter sur « GitHub » avec votre compte ;
   * aller dans « settings » (icône en forme d’engrenage en haut à droite) ;
   * sélectionner dans le menu de gauche « SSH keys » ;
   * cliquer sur « Add SSH key » ;
   * donner un nom à la clef et recopier le contenu du fichier contenant la clef dans la zone de texte « Key ». Si vous avez laissé les options par défaut, la clef se trouve dans le fichier « ~/.ssh/id_rsa.pub »

Tester le bon fonctionnement de la clef

Dans un terminal, taper les commandes suivantes (cf. doc github) :

Konsole.png
[user@ordi ~]$ ssh -T git@github.com


La sortie doit ressembler au texte ci-dessous :

Hi yopland! You've successfully authenticated, but GitHub does not provide shell access.

Si le message fait référence à votre login, c’est gagné.

Gestion des clefs avec « ssh-agent »

L’utilisation d’un agent, évite d’avoir à retaper la « passphrase » à chaque fois que l’on sollicite l’utilisation de la clé privée. Les clefs et les « passphrases » associées sont stockées en mémoire par l’agent et restituées selon les besoins.

Taper la commande suivante et renseigner la « passphrase » :

Konsole.png
[user@ordi ~]$ ssh-add


Tester le bon fonctionnement en essayant de se connecter sur le serveur. Il ne devrait pas être nécessaire de redonner la « passphrase ».

Konsole.png
[user@ordi ~]$ ssh -T git@github.com


Pour lister les clefs chargées par l’agent :

Konsole.png
[user@ordi ~]$ ssh-add -l


Pour supprimer de l’agent la clef stockée dans « ~/.ssh/id_rsa »  :

Konsole.png
[user@ordi ~]$ ssh-add -d ~/.ssh/id_rsa


Commandes principales

Dépôt local

Initialiser un dépôt git en local


Konsole.png
[user@ordi ~]$ git init


Lister les fichiers gérés par git


Konsole.png
[user@ordi ~]$ git status


Ajouter un ou des fichiers au dépôt local

git add fichier
git add '*.txt'
git add .

Renseigner son identité

Pour suivre les différentes modifications sur le serveur distant, il est nécessaire de renseigner son identité sur son dépôt.

Pour effectuer cette déclaration de manière globale (valable pour tous les dépôt locaux), taper les lignes suivantes :

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

Pour effectuer cette déclaration uniquement pour le dépôt en cours, taper les lignes suivantes :

git config user.email "you@example.com"
git config user.name "Your Name"

Pousser les modifications effectuées vers le dépôt local (commit)


Konsole.png
[user@ordi ~]$ git commit -m "message"


Suivre les différentes actions


Konsole.png
[user@ordi ~]$ git log


Création d’un dépôt sur github

Afin de recevoir les différents fichiers de ce billet, je me suis créé un dépôt « try_git ». Cette étape se fait via l’interface d’administration de « GitHub ».

Afin d’héberger différents projets, il est tout à fait possible de créer plusieurs dépôt sur un même compte.

Déclarer un dépôt distant

Afin d’éviter d’avoir à saisir l’URL complète du dépôt, il est possible de créer un alias.

   * mon dépôt distant est hébergé sur « github » ;
   * pour les tests le nom de mon dépôt distant est « try_git » ;
   * le nom de mon compte est « DiouxX » ;
   * la référence « locale » au dépôt distant est « origin ».


Konsole.png
[user@ordi ~]$ git remote add origin git@github.com:DiouxX/try_git.git


Il est maintenant possible d’utiliser « origin » en lieu et place de l’URL complète.

BlocNotes.png
À noter !
le nom origin est utilis& par convention. On peut bien évidemment le remplacer par n'importe quel nom/alias


Dépot distant avec port SSH différent

Si le dépôt distant utilise un port SSH différent de celui par défaut, il faut créer ou modifier le fichier .ssh/config en y ajoutant les paramètres suivants :

Hostname git.domaine.be
Port lePortSSH

Pousser les modifications locales vers le dépôt distant

   * nom sous lequel est référencé le dépôt distant : origin
   * branche utilisée : master
   * option « -u » : permet de sauvegarder les paramètres et ainsi ne pas avoir à les saisir à nouveau lors de la prochaine commande


Konsole.png
[user@ordi ~]$ git push -u origin master


Récupérer les modifications effectuées

Il est possible de récupérer les modifications effectuées sur le dépôt distant de deux manières différentes :

   * en effectuant une fusion directement sur l’espace de travail ;
   * en stockant les données sur une nouvelle branche.

Récupérer les modifications effectuées sur le dépôt distant et fusionner les modifications sur notre espace de travail

Konsole.png
[user@ordi ~]$ git pull origin master


Récupérer les modifications effectuées sur le dépôt distant sans effectuer de fusion (les données seront stockées sous leur propre branche)

Konsole.png
[user@ordi ~]$ git fetch origin


Lister les dépôts distants

   * l’option « -v » permet de visualiser les urls associées à chaque nom court;


Konsole.png
[user@ordi ~]$ git remote -v


Gestion des branches

Création d'une branche

Pour créer une branche et y basculer tout de suite, vous pouvez lancer la commande git checkout avec l'option -b :

Konsole.png
[user@ordi ~]$ git checkout -b newbranch
Switched to a new branch "newbranch"

C'est un raccourci pour :

Konsole.png
[user@ordi ~]$ $ git branch newbranch
$ git checkout newbranch


Switcher de branche

Pour l'instant, vous avez validé tous vos changements dans la branche newbranch et vous pouvez donc rebasculer vers la branche master :

Konsole.png
[user@ordi ~]$ $ git checkout master
Switched to branch "master"


Merge avec la branche master

Vous pouvez lancer vos tests, vous assurer que la correction est efficace et la fusionner dans la branche master pour la déployer en production. Vous réalisez ceci au moyen de la commande git merge :

Konsole.png
[user@ordi ~]$ git checkout master
$ git merge correctif


Suppression d'une branche


Konsole.png
[user@ordi ~]$ git branch -d newbranch



Autres commandes

Récupérer les différences entre la copie locale et le dépôt


Konsole.png
[user@ordi ~]$ git diff HEAD


Récupérer les dernières modifications que l’on vient d’effectuer


Konsole.png
[user@ordi ~]$ git diff --staged


Cloner un dépot

Cloner un dépôt entier :

Konsole.png
[user@ordi ~]$ git clone url


Cloner une branche :

Konsole.png
[user@ordi ~]$ git clone -b branche url


Références

   * http://carnetdevol.shost.ca/wordpress/aide-memoire-git/
   * documentation git : http://git-scm.com/
   * un livre en français : http://git-scm.com/book/fr/v1
   * un très bon tutoriel : https://try.github.io/levels/1/challenges/1
   * le site de gitub : https://github.com
   * utilisation de ssh : http://www.linux-france.org/prj/edu/archinet/systeme/ch13s03.html