Projet

Général

Profil

Utilisation de Git » Historique » Version 1

Florent Torregrosa, 07/06/2013 22:24
Création de la page à partir de l'ancienne page d'accueil du wiki

1 1 Florent Torregrosa
h1. Utilisation de Git
2 1 Florent Torregrosa
3 1 Florent Torregrosa
Adresse du dépôt git : LOGIN@scm.centrale-marseille.fr:/srv/git/PROJET/default.git
4 1 Florent Torregrosa
5 1 Florent Torregrosa
Pour ajouter des utilisateurs au projet : il faut se rapprocher du CRI. Pour deux raisons :
6 1 Florent Torregrosa
* Les utilisateurs doivent être connus de Redmine
7 1 Florent Torregrosa
* Les utilisateurs doivent avoir les droits de commit. Ceci implique d’être dans le bon groupe Unix.
8 1 Florent Torregrosa
9 1 Florent Torregrosa
{{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).)}}
10 1 Florent Torregrosa
11 1 Florent Torregrosa
Pour avoir une présentation de git et quelques commandes de base : http://www.llaumgui.com/public/slides/git-github-social-codding/#/
12 1 Florent Torregrosa
13 1 Florent Torregrosa
h2. Les clés ssh
14 1 Florent Torregrosa
15 1 Florent Torregrosa
h3. Sous linux
16 1 Florent Torregrosa
17 1 Florent Torregrosa
L'accès au dépôt se fait par les clés ssh autorisées dans vos comptes de l'école. 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.
18 1 Florent Torregrosa
19 1 Florent Torregrosa
Pour créer une paire de clé ssh, lancez la commande : <code>ssh-keygen</code>. Ceci crée deux fichiers dans votre ~/.ssh :
20 1 Florent Torregrosa
* id_rsa (votre clé privée à conserver précieusement)
21 1 Florent Torregrosa
* id_rsa.pub (votre clé publique à transmettre).
22 1 Florent Torregrosa
23 1 Florent Torregrosa
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) :
24 1 Florent Torregrosa
25 1 Florent Torregrosa
* si la clé est dans votre compte:
26 1 Florent Torregrosa
27 1 Florent Torregrosa
 * <code>cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_key</code>
28 1 Florent Torregrosa
29 1 Florent Torregrosa
* si elle est sur votre machine perso, *au choix* :
30 1 Florent Torregrosa
31 1 Florent Torregrosa
 * <code>ssh-copy-id login@sas1.ec-m.fr</code>
32 1 Florent Torregrosa
 * <code>cat ~/.ssh/id_rsa.pub | ssh LOGIN@sas1.ec-m.fr 'mkdir -m 700 -p ~/.ssh ; cat >> .ssh/authorized_keys'</code>
33 1 Florent Torregrosa
34 1 Florent Torregrosa
h3. Sous windows
35 1 Florent Torregrosa
36 1 Florent Torregrosa
Installez un client ssh. Par exemple "ppty":http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. 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.
37 1 Florent Torregrosa
38 1 Florent Torregrosa
Ceci vous permet d’avoir une console. Le programme puttygen (disponible "ici":http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) vous permet de générer une paire de clé.
39 1 Florent Torregrosa
# Exécutez-le
40 1 Florent Torregrosa
# Cliquez sur _Generate_.
41 1 Florent Torregrosa
# Bouger la souris dans tous les sens.
42 1 Florent Torregrosa
# 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. Cela permettra de distinguer les clés ssh sur le serveur. {{note(Donnez leur un nom qui vous permette de les distinguer. Par exemple, key pour votre clé privé et key.pub pour votre clé publique.)}}
43 1 Florent Torregrosa
{{important(Les clés générées par puttygen ne sont compatibles qu’avec putty)}}
44 1 Florent Torregrosa
45 1 Florent Torregrosa
Maintenant, vous devez placer ces clés sur le serveur. Pour cela :
46 1 Florent Torregrosa
# Connecter vous au serveur avec putty
47 1 Florent Torregrosa
# Créer un dossier .ssh (s’il n’existe pas) <code>mkdir ~/.ssh</code>
48 1 Florent Torregrosa
# Ouvrez le fichier authorized_keys (ou créez le) : <code>nano -w ~/.ssh/authorized_keys</code>
49 1 Florent Torregrosa
# Copiez/Collez votre clé publique dedans *sur une seule ligne*
50 1 Florent Torregrosa
# Sauvegardez
51 1 Florent Torregrosa
52 1 Florent Torregrosa
Ensuite, pour vous connecter au serveur à l’aide de ces clés avec le client putty :
53 1 Florent Torregrosa
# Ouvrez putty
54 1 Florent Torregrosa
# Dans Connexion > SSH > Auth, renseignez votre clé privée.
55 1 Florent Torregrosa
# Connectez vous au serveur comme d’habitude.
56 1 Florent Torregrosa
57 1 Florent Torregrosa
h2. Installer git
58 1 Florent Torregrosa
59 1 Florent Torregrosa
h3. Sous Linux
60 1 Florent Torregrosa
61 1 Florent Torregrosa
Git devrait être présent dans les dépôts de votre distribution. Installez-le comme un autre logiciel.
62 1 Florent Torregrosa
63 1 Florent Torregrosa
h3. Sous Windows
64 1 Florent Torregrosa
65 1 Florent Torregrosa
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.
66 1 Florent Torregrosa
67 1 Florent Torregrosa
Afin de vous faciliter la vie, installez également TortoiseGit. C’est une interface à git grâce à laquelle vous pourrez utiliser vos clés ssh plus facilement. Téléchargez le logiciel "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 comme demander puis sauvegardez.
68 1 Florent Torregrosa
69 1 Florent Torregrosa
Pour cloner un dépôt :
70 1 Florent Torregrosa
# Allez là où vous désirez le cloner
71 1 Florent Torregrosa
# Clique droit, puis clone
72 1 Florent Torregrosa
# Entrez le chemin du dépôt
73 1 Florent Torregrosa
# Cochez _Load Putty key_ et entrez le chemin de votre clé privé dans ce champ.
74 1 Florent Torregrosa
# Vous êtes opérationnel.
75 1 Florent Torregrosa
76 1 Florent Torregrosa
Liens complémentaires :
77 1 Florent Torregrosa
* http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git/installer-et-configurer-git
78 1 Florent Torregrosa
* http://melusine.eu.org/syracuse/G/git-windows/
79 1 Florent Torregrosa
80 1 Florent Torregrosa
h2. Pour cloner le dépôt
81 1 Florent Torregrosa
82 1 Florent Torregrosa
# Placez-vous là où vous voullez cloner le dépôt
83 1 Florent Torregrosa
# Tapez : <code>git clone ssh://LOGIN@scm.centrale-marseille.fr/srv/git/PROJET/default.git .</code>
84 1 Florent Torregrosa
85 1 Florent Torregrosa
h2. Commandes basiques de git
86 1 Florent Torregrosa
87 1 Florent Torregrosa
* Pour récupérer les "nouveautés" : <code>git pull</code>
88 1 Florent Torregrosa
* Pour envoyer ses modifications : <code>git push</code>
89 1 Florent Torregrosa
{{important(*TOUJOURS* faire un pull et régler les éventuels conflits en local avant de faire un push)}}
90 1 Florent Torregrosa
* Pour ajouter un fichier au projet : <code>git add <le_fichier></code>
91 1 Florent Torregrosa
* Pour enregistrer les modifications : <code>git commit <le_fichier></code>
92 1 Florent Torregrosa
* Pour plus de détails : http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git
93 1 Florent Torregrosa
94 1 Florent Torregrosa
h2. Fonctionnalités à connaître et exemples d’utilisation
95 1 Florent Torregrosa
96 1 Florent Torregrosa
h3. Les branches
97 1 Florent Torregrosa
98 1 Florent Torregrosa
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.
99 1 Florent Torregrosa
100 1 Florent Torregrosa
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.
101 1 Florent Torregrosa
102 1 Florent Torregrosa
Vous pouvez à tous moment réintégrer les modifications d’une branche dans _master_. Vous pouvez également abandonner une branche.
103 1 Florent Torregrosa
104 1 Florent Torregrosa
En somme, il devient intéressant de créer une nouvelle branche lorsque :
105 1 Florent Torregrosa
# La modification est longue
106 1 Florent Torregrosa
# La modification est compliquée
107 1 Florent Torregrosa
# L’implémentation de la modification reste un peu floue
108 1 Florent Torregrosa
109 1 Florent Torregrosa
Voici les commandes principales associées aux branches :
110 1 Florent Torregrosa
* Pour voir toutes vos branches locales, utilisez : <code>git branch</code>. La branche marquée d’une étoile est la branche courante.
111 1 Florent Torregrosa
* Pour créer une nouvelle branche : <code>git branch LE_NOM_DE_MA_BRANCHE</code>.
112 1 Florent Torregrosa
* Pour changer de branche : <code>git checkout LE_NOM_DE_MA_BRANCHE</code>
113 1 Florent Torregrosa
{{important(Vous devez avoir commité toutes vos modifications avant de changer de branche)}}
114 1 Florent Torregrosa
* Pour ajouter les changements dans _master_ : <code>git checkout master ; git merge LE_NOM_DE_MA_BRANCHE</code>
115 1 Florent Torregrosa
* Pour supprimer une branche : <code>git branch -d LE_NOM_DE_MA_BRANCHE</code>
116 1 Florent Torregrosa
{{note(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_)}}
117 1 Florent Torregrosa
118 1 Florent Torregrosa
Il est évidemment possible de travailler à plusieurs sur une branche autre que master. Pour avoir la liste des branches connues par le serveur, utilisez <code>git branch -r</code>. Pour récupérer cette branche en local : <code>git branch --track NOM_BRANCHE_LOCAL origin/NOM_BRANCHE_SERVEUR</code>.
119 1 Florent Torregrosa
{{note(Lorsque vous faîtes un pull, seule la branche dans laquelle vous vous trouvez est synchronisée depuis le serveur)}}
120 1 Florent Torregrosa
121 1 Florent Torregrosa
Pour ajouter une nouvelle branche sur le serveur, utilisez : <code>git push origin origin:refs/heads/NOM_NOUVELLE_BRANCHE</code>. 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 :
122 1 Florent Torregrosa
# Créez la branche sur le serveur
123 1 Florent Torregrosa
# Ouvrez .git/config
124 1 Florent Torregrosa
# Copiez la partie [branch "master"]
125 1 Florent Torregrosa
# Remplacez toutes les occurences de "master" par le nom de votre branche
126 1 Florent Torregrosa
# <code>git pull</code>
127 1 Florent Torregrosa
# <code>git push</code>
128 1 Florent Torregrosa
# Normalement, tout est à jour.
129 1 Florent Torregrosa
130 1 Florent Torregrosa
Pour supprimer une branche sur le serveur : <code>git push origin :heads/NOM_BRANCHE_A_SUPPRIMER</code>, puis <code>git branch -r -d origin/NOM_BRANCHE_A_SUPPRIMER</code> pour que la branche ne soit plus listée.
131 1 Florent Torregrosa
Plus d’infos "ici":http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git/travailler-avec-des-branches
132 1 Florent Torregrosa
133 1 Florent Torregrosa
h3. Les tags
134 1 Florent Torregrosa
135 1 Florent Torregrosa
Pour recherche une version plus facilement, vous pouvez tagger un commit avec <code>git tag NOMTAG IDCOMMIT</code>. Vous pourrez ensuite vous référer à ce commit à l’aide de NOMTAG.
136 1 Florent Torregrosa
137 1 Florent Torregrosa
{{note(Par défaut les tags ne sont pas envoyés lors d’un push. Utilisez _git push --tag_)}}
138 1 Florent Torregrosa
139 1 Florent Torregrosa
h3. La recherche
140 1 Florent Torregrosa
141 1 Florent Torregrosa
Grâce à la commande <code>git grep "PATTERN"</code>, vous pouvez recherche dans vos fichiers sources.
142 1 Florent Torregrosa
143 1 Florent Torregrosa
h3. Ignorer des fichiers
144 1 Florent Torregrosa
145 1 Florent Torregrosa
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).