Utilisation de Git » Historique » Révision 14
« Précédent |
Révision 14/19
(diff)
| Suivant »
Julien Enselme, 14/09/2013 01:15
ssh sous windows : précision à ne pas utiliser avec git
h1. Utilisation de Git
- Contenu
- Exécutez-le
- Cliquez sur Generate.
- Bouger la souris dans tous les sens (pour ajouter de l'entropie très difficile à obtenir avec une machine par nature déterministe).
- Sauvegardez votre clé publique et votre clé privée là où vous saurez les retrouver. Pensez à remplir le champ comment avec quelque chose qui vous identifie (vote identifiant CAS par exemple). Cela permettra de distinguer les clés ssh sur le serveur. Donnez leur un nom qui vous permette de les distinguer. Par exemple, key pour votre clé privé et key.pub pour votre clé publique.
- Connecter vous au serveur avec putty en entrant vote mot de passe
- Copiez/Collez votre clé publique dedans sur une seule ligne avec le commentaire à la fin séparé par une espace du reste de la ligne.
- Sauvegardez
- Ouvrez putty
- Dans Connexion > SSH > Auth, renseignez votre clé privée.
- Connectez vous au serveur comme d’habitude.
- Tapez les commandes suivantes dans l’interpréteur (vous pouvez ajouter des .exe à la fin) :
- Pour générer la clé : @ssh-keygen -C LOGIN@. Laissez les options par défaut.
- Pour copier la clé sur le serveur : @cat ~/.ssh/id_rsa.pub | ssh LOGIN@sas1.ec-m.fr 'mkdir -m 700 -p ~/.ssh ; cat >> .ssh/authorized_keys'@
- Tester que tout va bien avec : @ssh LOGIN@sas1.centrale-marseille.fr@. On ne vous demande pas votre mot de passe. Il est possible que vous ayez à entrer votre passphrase. Pour plus d’infos voir utilisation de SSH sous Unix
- Le chemin vers msysgit
- Dans l’onglet git, entrez votre nom et votre adresse mail.
- Pour les utilisateurs avancé : sous l’onglet git, vous pouvez éditer votre .gitconfig directement.
- Enregistrez
- Placez-vous là où vous voullez cloner le dépôt
- La modification est longue
- La modification est compliquée
- L’implémentation de la modification reste un peu floue
- Créez la branche sur le serveur
- Ouvrez .git/config
- Copiez la partie [branch "master"]
- Remplacez toutes les occurences de "master" par le nom de votre branche
- git pull
- git push
- Normalement, tout est à jour.
Adresse du dépôt git : LOGIN@scm.centrale-marseille.fr:/srv/git/PROJET/default.git
Pour ajouter des utilisateurs au projet, il faut se rapprocher du CRI. Pour deux raisons :
- Les utilisateurs doivent être connus de Redmine
- Les utilisateurs doivent avoir les droits de commit. Ceci implique d’être dans le bon groupe Unix.
{{important(L’encodage par défaut du dépôt est UTF-8. Faîtes-y attention surtout si l’encodage de votre système est différent (Vous êtes sous Windows ou linux > 10 ans).)}}
Pour avoir une présentation de git et quelques commandes de base : http://www.llaumgui.com/public/slides/git-github-social-codding/#/
h2. Les clés ssh
h3. Généralités sur ssh
Les clés ssh sont une application de la cryptographie asymétrique dans le but de se connecter à une machine distante. Explications :
L'utilisateur A désire se connecter au serveur ECM de façon sécurisée sans avoir à entrer en permance un mot de passe (qui peut s'oublier, être découvert). Pour cela, il va générer une paire de clés ssh :
- une clé privée qu'il gardera précieusement
- une clé publique à placer sur le serveur.
Pour placer ladite clé sur le serveur, il faut (en général) s'y connecter par mot de passe.
Lorsque A va vouloir se connecter à ECM, son client ssh va tout d'abord regarder si des clés sont disponibles. Ici, A va tenter de se connecter avec sa clé privée. Comme sa clé publique est sur le serveur et qu'un couple de clés est unique, ECM sait que celui qui veut se connecter est A. Il autorise donc la connection.
Notons enfin que lors de la première tentative de connection au serveur, le client demande si on désire accepter la clé publique du serveur. Celle-ci va en effet être utilisée pour le reconnaitre par la suite. Il est évidemment recommandé de ne pas accepter de clés de serveur inconnus.
h3. ssh sous GNU/Linux et autres Unix (*BSD, MacOS, etc.)
L'accès au dépôt se fait par clés ssh. Vous devez donc autoriser la connection à l'aide de votre paire de clé (vous pouvez également procéder de même pour vous connecter en ssh à vos comptes personnels ou d’association, il faut juste adapter les dossiers et les machines).
Pour créer une paire de clé ssh, lancez la commande : ssh-keygen
. Ceci crée deux fichiers dans votre ~/.ssh :
- id_rsa (votre clé privée à conserver précieusement)
- id_rsa.pub (votre clé publique à transmettre).
Commande pour créer une paire de clés ssh dans un fichier dont on choisit le nom et le commentaire directement : ssh-keygen -f nom_du_fichier -C commentaire
Pour pouvoir utiliser votre clé publique ssh (~/.ssh/id_rsa.pub) dans le fichier authorized_keys dans votre compte de l'école (eg sur le sas) :
-
si la clé est dans votre compte:
-
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_key
-
si elle est sur votre machine perso, au choix :
-
ssh-copy-id login@sas1.ec-m.fr
(recommandé) -
ssh-copy-id -i nom_du_fichier_sans_extension_pub login@sas1.ec-m.fr
si vous avez votre clé dans un autre fichier que id_rsa (recommandé) -
cat ~/.ssh/id_rsa.pub | ssh LOGIN@sas1.ec-m.fr 'mkdir -m 700 -p ~/.ssh ; cat >> .ssh/authorized_keys'
Vous pouvez avoir plusieurs couple de clés ssh sur votre machine (une par serveur par exemple). Auquel cas, leur donner un nom plus explicite peut s'avérer utile.
Dans votre dossier .ssh, vous pouvez aussi créer un fichier config pour, entre autre chose, créer un alias d'hôte ce qui vous évitera de taper par exemple ssh assos@sas1.centrale-marseille.fr mais juste ssh drupal (vous pourriez aussi utiliser un alias bash ou affilié pour atteindre ce but). Cette configuration est aussi valable avec scp et peut vous procurer une complétion des chemins sur l'hôte distant.
Si vous avez plusieurs clés sur votre machine, le fichier config s'avèrera obligatoire sinon, la bonne clé ne sera pas utilisée. exemple de fichier ~/.ssh/config :
host drupal
hostname sas1.centrale-marseille.fr
IdentityFile ~/.ssh/nom_du_fichier_sans_extension_pub
user assos
port 22
Si vous avez créé une clé avec une passphrase, celle-ci vous sera demandé à chaque connexion. Il existe des logiciels comme "ssh-agent":http://en.wikipedia.org/wiki/Ssh-agent pour la stocker en mémoire temporairement.
h3. ssh sous windows
{{important(Pour utiliser ssh avec git, nous recommandons de lire git sous windows avant. Ce paragraphe est surtout intéressant pour une utilisation "stand-alone" de ssh.)}}
Windows ne fournit pas de client ssh par défaut. Vous devez tout d'abord en installer un. Nous vous recommandons "putty":http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html qui s'exécute directement dans le dossier où il est. Allez sur "ce tuto":http://assos.centrale-marseille.fr/ginfo/content/utiliser-un-terminal-unix-comme-si-vous-%C3%A9tiez-au-cri pour plus de détails.
Néanmoins, ceci ne vous permet que d’avoir une console et pas de générer des clés.
C'est le programme puttygen (disponible "ici":http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) qui va s'en charger.
Exécutez-le¶
Cliquez sur Generate.¶
Bouger la souris dans tous les sens (pour ajouter de l'entropie très difficile à obtenir avec une machine par nature déterministe).¶
Sauvegardez votre clé publique et votre clé privée là où vous saurez les retrouver. Pensez à remplir le champ comment avec quelque chose qui vous identifie (vote identifiant CAS par exemple). Cela permettra de distinguer les clés ssh sur le serveur. Donnez leur un nom qui vous permette de les distinguer. Par exemple, key pour votre clé privé et key.pub pour votre clé publique.
¶
Donnez leur un nom qui vous permette de les distinguer. Par exemple, key pour votre clé privé et key.pub pour votre clé publique.
{{important(Les clés générées par puttygen ne sont compatibles qu’avec putty)}}
Maintenant, vous devez placer ces clés sur le serveur. Pour cela :
Connecter vous au serveur avec putty en entrant vote mot de passe¶
Créer un dossier .ssh (s’il n’existe pas) mkdir ~/.ssh
Ouvrez le fichier authorized_keys (ou créez le) : nano -w ~/.ssh/authorized_keys
Copiez/Collez votre clé publique dedans sur une seule ligne avec le commentaire à la fin séparé par une espace du reste de la ligne.¶
Sauvegardez¶
Ensuite, pour vous connecter au serveur à l’aide de ces clés avec le client putty :
Ouvrez putty¶
Dans Connexion > SSH > Auth, renseignez votre clé privée.¶
Connectez vous au serveur comme d’habitude.¶
h2. Installer git
h3. git sous Linux
Git devrait être présent dans les dépôts de votre distribution. Installez-le comme un autre logiciel. Il existe de nombreuses interfaces graphiques tel que la très complète "cola-git":http://git-cola.github.io ou la moins développée "qgit":http://sourceforge.net/projects/qgit/.
h3. git sous Windows
{{Important(à reprendre en testant)}}
Il faut tout d’abord installer git. Téléchargez msysgit par "ici":http://code.google.com/p/msysgit/. Installez le avec les paramètres par défaut, Use Git Bash only, Use OpenSSH et Checkout Windows-style, commit Unix-style line endings.
Vous avez alors un environnement qui vous permet d’utiliser git en local en ligne de commande via Git bash ou en mode graphique via Git GUI.
Nous allons maintenant créer des clés ssh. Ces clés vont vous permettre d’utiliser git sur les serveurs de l’école. Vous pouvez passer cette étape et toutes celles concernant ssh pour une installation en local. Pour ce faire :
Lancez Git Bash
Tapez les commandes suivantes dans l’interpréteur (vous pouvez ajouter des .exe à la fin) :¶
Pour générer la clé : @ssh-keygen -C LOGIN@. Laissez les options par défaut.¶
Pour copier la clé sur le serveur : @cat ~/.ssh/id_rsa.pub | ssh LOGIN@sas1.ec-m.fr 'mkdir -m 700 -p ~/.ssh ; cat >> .ssh/authorized_keys'@¶
Tester que tout va bien avec : @ssh LOGIN@sas1.centrale-marseille.fr@. On ne vous demande pas votre mot de passe. Il est possible que vous ayez à entrer votre passphrase. Pour plus d’infos voir utilisation de SSH sous Unix¶
{{important(Pensez à sauvegarder sur un support sécurisé le dossier .ssh. Il contient votre clé privée à ne pas diffuser et votre clé publique)}}
Afin de vous faciliter la vie, installez également TortoiseGit. C’est une interface à git grâce à laquelle vous pourrez utiliser git et vos clés ssh plus facilement. Téléchargez le logiciel (disponible en version 32 et 64 bits) "ici":http://code.google.com/p/tortoisegit/ et installez-le avec les options par défaut. Pour le configurer, faîtes un clic droit dans un dossier ou sur votre bureau, puis allez dans TortoiseGit > Settings. Entrez :
Le chemin vers msysgit¶
Dans l’onglet Network, entrez /bin/ssh.exe dans le champ SSH client
Dans l’onglet git, entrez votre nom et votre adresse mail.¶
Pour les utilisateurs avancé : sous l’onglet git, vous pouvez éditer votre .gitconfig directement.¶
Enregistrez¶
Pour cloner un dépôt : utilisez Git Gui. TortoiseGit renvoie une erreur lorsque vous tentez de cloner avec ssh. Pour toute les autres opérations, TortoiseGit fonctionne très bien. Faîtes un clic droit dans le dossier ou sur un fichier et vous aurez sous le menu TortoiseGit toutes les options diponibles.
h4. Liens complémentaires
- http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git/installer-et-configurer-git
- http://melusine.eu.org/syracuse/G/git-windows/
h2. Pour cloner le dépôt
Placez-vous là où vous voullez cloner le dépôt¶
Tapez : git clone ssh://LOGIN@scm.centrale-marseille.fr/srv/git/PROJET/default.git .
h2. Commandes basiques de git
- Pour récupérer les "nouveautés" :
git pull
- Pour envoyer ses modifications :
git push
{{important(TOUJOURS faire un pull et régler les éventuels conflits en local avant de faire un push)}} - Pour ajouter un fichier au projet :
git add <le_fichier>
- Pour enregistrer les modifications :
git commit <le_fichier>
- Pour plus de détails : http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git
h2. Fonctionnalités à connaître et exemples d’utilisation
h3. Les branches
Les branches représentent l’une des fonctionnalités les plus puissantes de git. Par défaut toutes les modifications sont faites dans la branche master. C’est la branche principale de votre projet.
L’intérêt des branches est de pouvoir faire de grosses modifications en parallèle sans modifier le code principal. Par exemple, vous voulez implémenter une super idée. Mais super idée va vous demander du temps de développement et de nombreuses modifications dans votre code. Il serait dommage de paralyser la correction de bug et les petites modifications le temps que super idée soit terminée. C’est là que les branches interviennent : vous créez une nouvelle branche et tous les fichiers seront temporairement remplacés par ceux de cette branche.
Vous pouvez à tous moment réintégrer les modifications d’une branche dans master. Vous pouvez également abandonner une branche.
En somme, il devient intéressant de créer une nouvelle branche lorsque :
La modification est longue¶
La modification est compliquée¶
L’implémentation de la modification reste un peu floue¶
Voici les commandes principales associées aux branches :
- Pour voir toutes vos branches locales, utilisez :
git branch
. La branche marquée d’une étoile est la branche courante. - Pour créer une nouvelle branche :
git branch LE_NOM_DE_MA_BRANCHE
. - Pour changer de branche :
git checkout LE_NOM_DE_MA_BRANCHE
{{important(Vous devez avoir commité toutes vos modifications avant de changer de branche)}} - Pour ajouter les changements dans master :
git checkout master ; git merge LE_NOM_DE_MA_BRANCHE
- Pour supprimer une branche :
git branch -d LE_NOM_DE_MA_BRANCHE
Cette commande vérifie avant la suppression que les changements ont bien été ajoutés dans master. Pour supprimer une branche sans cette vérification, utilisez git branch -D LE_NOM_DE_MA_BRANCHE
Il est évidemment possible de travailler à plusieurs sur une branche autre que master. Pour avoir la liste des branches connues par le serveur, utilisez git branch -r
. Pour récupérer cette branche en local : git branch --track NOM_BRANCHE_LOCAL origin/NOM_BRANCHE_SERVEUR
.
Lorsque vous faîtes un pull, seule la branche dans laquelle vous vous trouvez est synchronisée depuis le serveur
Pour ajouter une nouvelle branche sur le serveur, utilisez : git push origin origin:refs/heads/NOM_NOUVELLE_BRANCHE
. Vous pouvez ensuite suivre cette branche avec la commande précédente. Si vous avez tout d’abord créé votre branche en local et que vous désirez l’envoyer sur le serveur :
Créez la branche sur le serveur¶
Ouvrez .git/config¶
Copiez la partie [branch "master"]¶
Remplacez toutes les occurences de "master" par le nom de votre branche¶
git pull
¶
git push
¶
Normalement, tout est à jour.¶
Pour supprimer une branche sur le serveur : git push origin :heads/NOM_BRANCHE_A_SUPPRIMER
, puis git branch -r -d origin/NOM_BRANCHE_A_SUPPRIMER
pour que la branche ne soit plus listée.
Plus d’infos "ici":http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git/travailler-avec-des-branches
h3. Les tags
Pour recherche une version plus facilement, vous pouvez tagger un commit avec git tag NOMTAG IDCOMMIT
. Vous pourrez ensuite vous référer à ce commit à l’aide de NOMTAG.
Par défaut les tags ne sont pas envoyés lors d’un push. Utilisez git push --tag
h3. La recherche
Grâce à la commande git grep "PATTERN"
, vous pouvez recherche dans vos fichiers sources.
h3. Ignorer des fichiers
Si vous désirez que certains fichiers ne soient pas pris en compte par git (fichier de sauvegarde de votre éditeur de texte par exemple), créez un fichier .gitignore dans le dossier de votre dépôt. Ajoutez dans ce fichier le nom des fichiers à ignorer (1 par ligne).
Mis à jour par Julien Enselme il y a plus de 11 ans · 19 révisions