Projet

Général

Profil

Utilisation de Git » Historique » Version 19

Florent Torregrosa, 30/08/2014 11:33
ajout partie configurer son environnement

1 1 Florent Torregrosa
h1. Utilisation de Git
2 1 Florent Torregrosa
3 2 Florent Torregrosa
{{>toc}}
4 2 Florent Torregrosa
5 1 Florent Torregrosa
Adresse du dépôt git : LOGIN@scm.centrale-marseille.fr:/srv/git/PROJET/default.git
6 1 Florent Torregrosa
7 3 Julien Enselme
Pour ajouter des utilisateurs au projet, il faut se rapprocher du CRI. Pour deux raisons :
8 3 Julien Enselme
9 1 Florent Torregrosa
* Les utilisateurs doivent être connus de Redmine
10 1 Florent Torregrosa
* Les utilisateurs doivent avoir les droits de commit. Ceci implique d’être dans le bon groupe Unix.
11 1 Florent Torregrosa
12 3 Julien Enselme
{{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).)}}
13 1 Florent Torregrosa
14 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/#/
15 1 Florent Torregrosa
16 16 Julien Enselme
h2. git sous Linux et autres Unix
17 1 Florent Torregrosa
18 16 Julien Enselme
h3. Installer git sous Linux
19 1 Florent Torregrosa
20 12 Julien Enselme
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/.
21 1 Florent Torregrosa
22 16 Julien Enselme
h3. Utiliser git sous linux
23 1 Florent Torregrosa
24 16 Julien Enselme
Classiquement, sous linux, on utilise git en ligne de commande. Voir [[Utilisation_de_Git#Pour-cloner-le-dépôt|comment cloner le dépôt]] et [[Utilisation_de_Git#Commandes-basiques-de-git|les commandes basiques de git]]. Vous pouvez également utiliser l’une des interfaces plus ou moins complètes citées ci-avant.
25 1 Florent Torregrosa
26 16 Julien Enselme
h2. git sous Windows
27 1 Florent Torregrosa
28 16 Julien Enselme
h3. Installer git sous Windows
29 1 Florent Torregrosa
30 16 Julien Enselme
Il faut tout d’abord installer git, puis installer une interface à git qui facilite sont utilisation en environnement non Unix.
31 1 Florent Torregrosa
32 16 Julien Enselme
Pour installer git, téléchargez msysgit par "ici":http://code.google.com/p/msysgit/. Installez le avec les paramètres par défaut (ne pas toucher aux composants à installer, puis sur les écrans suivant : _Use Git Bash only_, _Use OpenSSH_ et _Checkout Windows-style, commit Unix-style line endings_).
33 16 Julien Enselme
34 16 Julien Enselme
Vous avez alors un environnement qui vous permet d’utiliser git en ligne de commande via _Git bash_ ou en mode graphique (mais de façon assez basique) via _Git GUI_.
35 16 Julien Enselme
36 16 Julien Enselme
Nous allons maintenant créer des clés ssh. Ces clés vont vous permettre d’utiliser git facilement sur les serveurs de l’école. Vous pouvez passer cette étape et toutes celles concernant ssh pour une installation en local. Remplacez LOGIN par votre login CAS de Centrale Marseille. Pour générer les clés :
37 16 Julien Enselme
38 12 Julien Enselme
# Lancez _Git Bash_
39 16 Julien Enselme
# Tapez les commandes suivantes dans l’interpréteur :
40 1 Florent Torregrosa
41 16 Julien Enselme
 # Pour générer la clé, en laissant les options par défaut (appuyer trois fois sur _Entrée_) : @ssh-keygen -C LOGIN@
42 16 Julien Enselme
 # Pour copier la clé sur le serveur (*attention aux apostrophes*). Si c’est la première fois que vous vous connectez au serveur, il vous sera demandé d’accepter sa clé. Répondez _yes_ le cas échéant. : @cat ~/.ssh/id_rsa.pub | ssh LOGIN@sas1.ec-m.fr 'mkdir -m 700 -p ~/.ssh ; cat >> .ssh/authorized_keys'@
43 16 Julien Enselme
 # Tester que tout va bien avec : @ssh LOGIN@sas1.centrale-marseille.fr@. On ne vous demande pas votre mot de passe et vous devriez tomber dans une invite de commande. Il est possible que vous ayez à entrer votre passphrase. Pour plus d’infos voir [[Utilisation_de_Git#ssh-sous-GNULinux-et-autres-Unix-BSD-MacOS-etc|utilisation de SSH sous Unix]].
44 1 Florent Torregrosa
45 16 Julien Enselme
{{important(Pensez à sauvegarder sur *un support sécurisé* le dossier .ssh. Il contient votre clé privée *à ne pas diffuser* et votre clé publique)}}
46 1 Florent Torregrosa
47 1 Florent Torregrosa
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 :
48 16 Julien Enselme
# Le chemin vers msysgit (si vous l’avez installer ailleurs que dans le chemin par défaut)
49 1 Florent Torregrosa
# Dans l’onglet _Network_, entrez /bin/ssh.exe dans le champ _SSH client_
50 12 Julien Enselme
# Dans l’onglet _git_, entrez votre nom et votre adresse mail.
51 16 Julien Enselme
# *Utilisateurs avancé* : sous l’onglet git, vous pouvez éditer votre .gitconfig directement.
52 12 Julien Enselme
# Enregistrez
53 12 Julien Enselme
54 16 Julien Enselme
h3. Utilisez git sous Windows
55 12 Julien Enselme
56 16 Julien Enselme
Pour cloner un dépôt : utilisez _Git Gui_ (TortoiseGit renvoie une erreur lorsque vous tentez de cloner avec ssh) :
57 16 Julien Enselme
# Lancer _Git GUI_
58 16 Julien Enselme
# Cliquez sur _cloner un dépôt_
59 16 Julien Enselme
# Dans _source_ entrez : @ssh://LOGIN@scm.centrale-marseille.fr/srv/git/NOM_DE_VOTRE_PROJET/default.git
60 16 Julien Enselme
# Dans _Destination_ entrez le chemin du dossier dans lequel vous voulez cloner le dépôt.
61 16 Julien Enselme
# Clonez
62 16 Julien Enselme
63 16 Julien Enselme
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 disponibles : @git pull@ pour récupérer les données depuis le serveur, @git push@ pour les envoyer (*toujours faire un @git pull@ avant de faire un @git push@ pour éviter les conflits sur le serveur*), @git commit@ pour enregistrer vos modifications dans git,…
64 16 Julien Enselme
65 19 Florent Torregrosa
h2. Configurer son environnement
66 19 Florent Torregrosa
67 19 Florent Torregrosa
Quelques alias pratiques et options de configuration à saisir une bonne fois pour toute.
68 19 Florent Torregrosa
69 19 Florent Torregrosa
<pre>
70 19 Florent Torregrosa
<code>
71 19 Florent Torregrosa
git config --global user.name "name"
72 19 Florent Torregrosa
git config --global user.email "mail@mail.mail"
73 19 Florent Torregrosa
74 19 Florent Torregrosa
git config --global core.editor "vim" // ou emacs ou... votre éditeur préféré. 
75 19 Florent Torregrosa
git config --global core.fileMode false // Si vous voulez ignorer les modifications de permissions de fichier.
76 19 Florent Torregrosa
77 19 Florent Torregrosa
git config --global color.ui true
78 19 Florent Torregrosa
79 19 Florent Torregrosa
git config --global branch.autosetuprebase always // Pour appliquer par défaut l'option --rebase
80 19 Florent Torregrosa
81 19 Florent Torregrosa
git config --global alias.st 'status'
82 19 Florent Torregrosa
git config --global alias.co 'checkout'
83 19 Florent Torregrosa
git config --global alias.up 'pull --rebase'
84 19 Florent Torregrosa
</code>
85 19 Florent Torregrosa
</pre>
86 19 Florent Torregrosa
87 16 Julien Enselme
h2. Liens complémentaires
88 1 Florent Torregrosa
89 15 Julien Enselme
* http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git/installer-et-configurer-git
90 1 Florent Torregrosa
* http://melusine.eu.org/syracuse/G/git-windows/
91 1 Florent Torregrosa
* Liste d’interfaces pour git : http://git-scm.com/downloads/guis
92 1 Florent Torregrosa
93 1 Florent Torregrosa
h2. Pour cloner le dépôt
94 1 Florent Torregrosa
95 1 Florent Torregrosa
# Placez-vous là où vous voullez cloner le dépôt
96 1 Florent Torregrosa
# Tapez : <code>git clone ssh://LOGIN@scm.centrale-marseille.fr/srv/git/PROJET/default.git .</code>
97 1 Florent Torregrosa
98 1 Florent Torregrosa
h2. Commandes basiques de git
99 1 Florent Torregrosa
100 1 Florent Torregrosa
* Pour récupérer les "nouveautés" : <code>git pull</code>
101 1 Florent Torregrosa
* Pour envoyer ses modifications : <code>git push</code>
102 1 Florent Torregrosa
{{important(*TOUJOURS* faire un pull et régler les éventuels conflits en local avant de faire un push)}}
103 18 Florent Torregrosa
{{tip(Faire un pull --rebase permet de se placer au-dessus de tout les commits précédents et de garder un dépôt "propre".)}}
104 1 Florent Torregrosa
* Pour ajouter un fichier au projet : <code>git add <le_fichier></code>
105 1 Florent Torregrosa
* Pour enregistrer les modifications : <code>git commit <le_fichier></code>
106 1 Florent Torregrosa
* Pour plus de détails : http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git
107 1 Florent Torregrosa
108 1 Florent Torregrosa
h2. Fonctionnalités à connaître et exemples d’utilisation
109 1 Florent Torregrosa
110 1 Florent Torregrosa
h3. Les branches
111 1 Florent Torregrosa
112 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.
113 1 Florent Torregrosa
114 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.
115 1 Florent Torregrosa
116 1 Florent Torregrosa
Vous pouvez à tous moment réintégrer les modifications d’une branche dans _master_. Vous pouvez également abandonner une branche.
117 1 Florent Torregrosa
118 1 Florent Torregrosa
En somme, il devient intéressant de créer une nouvelle branche lorsque :
119 1 Florent Torregrosa
# La modification est longue
120 1 Florent Torregrosa
# La modification est compliquée
121 1 Florent Torregrosa
# L’implémentation de la modification reste un peu floue
122 1 Florent Torregrosa
123 1 Florent Torregrosa
Voici les commandes principales associées aux branches :
124 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.
125 1 Florent Torregrosa
* Pour créer une nouvelle branche : <code>git branch LE_NOM_DE_MA_BRANCHE</code>.
126 1 Florent Torregrosa
* Pour changer de branche : <code>git checkout LE_NOM_DE_MA_BRANCHE</code>
127 1 Florent Torregrosa
{{important(Vous devez avoir commité toutes vos modifications avant de changer de branche)}}
128 1 Florent Torregrosa
* Pour ajouter les changements dans _master_ : <code>git checkout master ; git merge LE_NOM_DE_MA_BRANCHE</code>
129 1 Florent Torregrosa
* Pour supprimer une branche : <code>git branch -d LE_NOM_DE_MA_BRANCHE</code>
130 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_)}}
131 1 Florent Torregrosa
132 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>.
133 1 Florent Torregrosa
{{note(Lorsque vous faîtes un pull, seule la branche dans laquelle vous vous trouvez est synchronisée depuis le serveur)}}
134 1 Florent Torregrosa
135 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 :
136 1 Florent Torregrosa
# Créez la branche sur le serveur
137 1 Florent Torregrosa
# Ouvrez .git/config
138 1 Florent Torregrosa
# Copiez la partie [branch "master"]
139 1 Florent Torregrosa
# Remplacez toutes les occurences de "master" par le nom de votre branche
140 1 Florent Torregrosa
# <code>git pull</code>
141 1 Florent Torregrosa
# <code>git push</code>
142 1 Florent Torregrosa
# Normalement, tout est à jour.
143 1 Florent Torregrosa
144 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.
145 1 Florent Torregrosa
Plus d’infos "ici":http://www.siteduzero.com/informatique/tutoriels/gerez-vos-codes-source-avec-git/travailler-avec-des-branches
146 1 Florent Torregrosa
147 1 Florent Torregrosa
h3. Les tags
148 1 Florent Torregrosa
149 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.
150 1 Florent Torregrosa
151 1 Florent Torregrosa
{{note(Par défaut les tags ne sont pas envoyés lors d’un push. Utilisez _git push --tag_)}}
152 1 Florent Torregrosa
153 1 Florent Torregrosa
h3. La recherche
154 1 Florent Torregrosa
155 1 Florent Torregrosa
Grâce à la commande <code>git grep "PATTERN"</code>, vous pouvez recherche dans vos fichiers sources.
156 1 Florent Torregrosa
157 1 Florent Torregrosa
h3. Ignorer des fichiers
158 1 Florent Torregrosa
159 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).