Projet

Général

Profil

Git » Historique » Version 12

Régis Bouguin, 20/06/2013 22:57

1 7 Régis Bouguin
h1. Utiliser git
2
3
Pour proposer une correction sur un problème particulier ou un ajout de fonctionnalité, vous devez vous créer un dépot sur github (https://github.com) en clonant le dépot tbelliard/gepi.git, cloner ce dépot en local, créer une branche, effectuer vos corrections, pousser cette branche sur votre dépot, annoncer sur la liste de diffusion votre correction
4
5 9 Régis Bouguin
h2. Étape 1 _créer son espace de travail_
6 7 Régis Bouguin
7
Les développeurs ne travaillent pas sur le dépot officiel (git://github.com/tbelliard/gepi.git) mais sur une copie personnelle de ce dépot. Si la correction ou la nouvelle fonctionnalité satisfait la dream team (développeurs historiques qui gérent le dépot officiel), ils l'intégrent sur le dépot officiel.
8
9
h3. Étape 1.1 _créer un compte github_
10
11
Créer un compte sur https://github.com
12
Créer un couple de clés SSH sur votre ordinateur
13
Ajouter la clé publique dans votre compte github (https://github.com/settings/ssh)
14
15
h3. Étape 1.2 _créer des copies de travail_
16
17
Aller sur le dépot officiel (https://github.com/tbelliard/gepi/) et créer une copie (Fork)
18 8 Régis Bouguin
Sur votre ordinateur, mettez en place un dépot git local à partir de votre dépot (https://github.com/Regis85/gepi pour moi)
19 7 Régis Bouguin
20
	mkdir ~/git_gepi
21
cd ~/git_gepi
22
git clone git@github.com:Regis85/gepi.git
23
24
À partir de là, vous pouvez utiliser Gitk et Git Gui ou le terminal pour récupérer les branches de votre dépot.
25
Pour pouvoir également mettre à jour votre dépot local à partir du dépot officiel, vous devez ajouter celui-ci comme dépot de référence
26
27 11 Régis Bouguin
	cd ~/git_gepi/gepi
28
git remote
29 7 Régis Bouguin
→ origin
30
git remote add Officiel https://github.com/tbelliard/gepi.git
31
git remote  -v
32
→ Officiel	https://github.com/tbelliard/gepi.git (fetch)
33
→ Officiel	https://github.com/tbelliard/gepi.git (push)
34
→ origin	git@github.com:Regis85/gepi.git (fetch)
35
→ origin	git@github.com:Regis85/gepi.git (push)
36
37
Vous pouvez ajouter d'autres dépôts que vous souhaitez suivre.
38
39 10 Régis Bouguin
	_Les étapes suivantes sont l'illustration de mes habitudes, ce n'est pas la seule façon de faire et sûrement pas la meilleure mais elle me convient_
40
41
h2. Étape 2 _mettre à jour son dépôt_
42
43
h3. _avec git gui_
44
45 1 Stéphane Boireau
Lancer git gui → Dépôt distant → Récupérer de → All (ou un des dépôts que vous suivez)
46 11 Régis Bouguin
Branche → Créer → Branche de suivi
47
(ou)
48
Branche → Charger
49
(puis)
50 10 Régis Bouguin
Fusionner → Fusion locale → Branche de suivi → choisir la branche
51
52
Choisir au besoin une autre branche locale et la fusionner à celle du dépôt officiel
53
54 1 Stéphane Boireau
h3. _dans un terminal_
55 11 Régis Bouguin
56
Se placer dans le répertoire et vérifier les dépôts
57
58
	cd git_gepi/gepi
59
:~/git_gepi/gepi$ git remote
60
→ Officiel
61
→ origin
62
63
Récupèrer toutes les données du dépôt
64
65
	git_gepi/gepi$ git fetch Officiel 
66
→ remote: Counting objects: 86, done.
67
→ remote: Compressing objects: 100% (23/23), done.
68
→ remote: Total 51 (delta 39), reused 40 (delta 28)
69
→ Unpacking objects: 100% (51/51), done.
70
~/git_gepi/gepi$ git branch
71
→ * master
72
73
Créer des branches au besoin
74
75
	 git_gepi/gepi$ git checkout -b release-1.6.3 origin/release-1.6.3
76
→ Branch release-1.6.3 set up to track remote branch release-1.6.3 from origin.
77
→ Switched to a new branch 'release-1.6.3'
78
git_gepi/gepi$ git branch
79
→   master
80
→ * release-1.6.3
81
82
ou se placer sur la branche à utiliser
83
84
	 git_gepi/gepi$ git checkout release-1.6.3 
85
→ Switched to branch 'release-1.6.3'
86
git_gepi/gepi$ git branch
87
→   master
88
→ * release-1.6.3
89
90
Mettre à jour deouis le dépôt officiel
91
92
	 git_gepi/gepi$ git merge Officiel/release-1.6.3
93
→ Updating 66aeffc..a7f8305
94
→ Fast-forward
95
→  gestion/droits_acces.php |   4 
96
→  lib/share.inc.php        | 115
97
→  mod_abs2/export_stat.php |   3
98
→  prepa_conseil/index1.php |  64
99
→  4 files changed, 130 insertions(+), 56 deletions(-)
100
git_gepi/gepi$ git status
101
→  # On branch release-1.6.3
102
→  # Your branch is ahead of 'origin/release-1.6.3' by 11 commits.
103
→  #   (use "git push" to publish your local commits)
104
→  #
105
→  nothing to commit, working directory clean
106
107 12 Régis Bouguin
autre méthode pour mettre à jour une branche
108
109
	 git_gepi/gepi$ git checkout release-1.6.3 
110
→  Switched to branch 'release-1.6.3'
111
regis@regis-disque:~/git_gepi/gepi$ git status
112
→  # On branch release-1.6.3
113
→  nothing to commit, working directory clean
114
regis@regis-disque:~/git_gepi/gepi$ git pull Officiel release-1.6.3
115
→  From https://github.com/tbelliard/gepi
116
→   * branch            release-1.6.3 -> FETCH_HEAD
117
→  Already up-to-date.
118
119
120 11 Régis Bouguin
Après la mise à jour le dépôt personnel sur github n'est plus à jour.
121
Pour le mettre à jour
122
123
	 git_gepi/gepi$ git push
124
→  Counting objects: 81, done.
125
→  Delta compression using up to 2 threads.
126
→  Compressing objects: 100% (48/48), done.
127
→  Writing objects: 100% (48/48), 10.61 KiB, done.
128
→  Total 48 (delta 36), reused 0 (delta 0)
129
→  To git@github.com:Regis85/gepi.git
130
→  66aeffc..a7f8305  release-1.6.3 -> release-1.6.3
131
git_gepi/gepi$ git status
132
→  # On branch release-1.6.3
133
→  nothing to commit, working directory clean
134
135 10 Régis Bouguin
136
...
137
138
139 7 Régis Bouguin
140
141 1 Stéphane Boireau
h1. Utiliser git en ligne de commande
142 5 Régis Bouguin
143 1 Stéphane Boireau
Mettre en place un dépot git local à partir du dépot officiel :
144
145
	mkdir ~/git_gepi
146
cd ~/git_gepi
147
git clone git://github.com/tbelliard/gepi.git
148 4 Régis Bouguin
149 1 Stéphane Boireau
150 2 Stéphane Boireau
151
152 6 Régis Bouguin
153
154 3 Stéphane Boireau
h2. En vrac...
155
156 2 Stéphane Boireau
En vrac, j'avais noté:
157
158
git checkout developpement : va te sortir la branche développement dans le répertoire de travail.
159
git checkout production : va te sortir la branche production dans le répertoire de travail.
160
161
git status : permet de savoir quelle branche est chargée dans le répertore de travail.
162
163
git commit -m "MESSAGE" chemin/fichier : va commiter en local dans la branche du répertoire de travail...
164
165
git push origin production : va envoyer les fichiers commités en local vers le dépot github
166
167
git diff developpement joss/developpement : affiche un diff des branches indiquées
168
169
git log --name-only joss/developpement : affiche un log des commits avec les fichiers concernés
170
171
172
git fetch all
173
174
175 3 Stéphane Boireau
Ajouter le dépôt de Josselin, afficher dans le dossier courant la branche developpement, récupérer les dernières modifications sur le dépot de Josselin, prendre en compte dans le dépot local les modification commitées par Josselin sur son dépôt :
176 2 Stéphane Boireau
git remote add joss git@github.com:kigeia/gepi
177
git checkout developpement
178
git fetch joss
179
git merge joss/developpement
180
181
git branch -a : lister les branches
182
183
git reset --hard [sha_du_commit_avant_merge]
184
185
git reset --hard HEAD : Annuler les changements non commités. Reset de la copie de travail. Retour à la version la plus récente de la branche courante.
186
HEAD est un pointeur vers la branche courante, à son niveau de commit le plus récent.
187
188
En supposant que tu as poussé tes commit précédent sur origin/master,
189
le mieux est encore de faire git merge <branche>, puis quand tu as
190
fini le merge tu fait git diff origin/master. Si ça convient pas tu
191
fais git reset --hard origin/master; ou git push sinon.
192
193
============================================================
194
Pour annuler un commit particulier, sans perturber ceux effectués entre temps:
195
12:05 steph@hpcrob ~/gepi_git_officiel/gepi(release-1.6.1) $ git merge marc/no_stack_overflow
196
Updating e66cd62..d9ef04c
197
Fast-forward
198
 lib/share.inc.php |   15 +++++++++++++--
199
1 files changed, 13 insertions(+), 2 deletions(-)
200
12:06 steph@hpcrob ~/gepi_git_officiel/gepi(release-1.6.1) $
201
202
git revert d9ef04c58
203
============================================================