Git » Historique » Version 11
Régis Bouguin, 18/06/2013 22:06
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 | Après la mise à jour le dépôt personnel sur github n'est plus à jour. |
||
108 | Pour le mettre à jour |
||
109 | |||
110 | git_gepi/gepi$ git push |
||
111 | → Counting objects: 81, done. |
||
112 | → Delta compression using up to 2 threads. |
||
113 | → Compressing objects: 100% (48/48), done. |
||
114 | → Writing objects: 100% (48/48), 10.61 KiB, done. |
||
115 | → Total 48 (delta 36), reused 0 (delta 0) |
||
116 | → To git@github.com:Regis85/gepi.git |
||
117 | → 66aeffc..a7f8305 release-1.6.3 -> release-1.6.3 |
||
118 | git_gepi/gepi$ git status |
||
119 | → # On branch release-1.6.3 |
||
120 | → nothing to commit, working directory clean |
||
121 | |||
122 | 10 | Régis Bouguin | |
123 | ... |
||
124 | |||
125 | |||
126 | 7 | Régis Bouguin | |
127 | |||
128 | 1 | Stéphane Boireau | h1. Utiliser git en ligne de commande |
129 | 5 | Régis Bouguin | |
130 | 1 | Stéphane Boireau | Mettre en place un dépot git local à partir du dépot officiel : |
131 | |||
132 | mkdir ~/git_gepi |
||
133 | cd ~/git_gepi |
||
134 | git clone git://github.com/tbelliard/gepi.git |
||
135 | 4 | Régis Bouguin | |
136 | 1 | Stéphane Boireau | |
137 | 2 | Stéphane Boireau | |
138 | |||
139 | 6 | Régis Bouguin | |
140 | |||
141 | 3 | Stéphane Boireau | h2. En vrac... |
142 | |||
143 | 2 | Stéphane Boireau | En vrac, j'avais noté: |
144 | |||
145 | git checkout developpement : va te sortir la branche développement dans le répertoire de travail. |
||
146 | git checkout production : va te sortir la branche production dans le répertoire de travail. |
||
147 | |||
148 | git status : permet de savoir quelle branche est chargée dans le répertore de travail. |
||
149 | |||
150 | git commit -m "MESSAGE" chemin/fichier : va commiter en local dans la branche du répertoire de travail... |
||
151 | |||
152 | git push origin production : va envoyer les fichiers commités en local vers le dépot github |
||
153 | |||
154 | git diff developpement joss/developpement : affiche un diff des branches indiquées |
||
155 | |||
156 | git log --name-only joss/developpement : affiche un log des commits avec les fichiers concernés |
||
157 | |||
158 | |||
159 | git fetch all |
||
160 | |||
161 | |||
162 | 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 : |
163 | 2 | Stéphane Boireau | git remote add joss git@github.com:kigeia/gepi |
164 | git checkout developpement |
||
165 | git fetch joss |
||
166 | git merge joss/developpement |
||
167 | |||
168 | git branch -a : lister les branches |
||
169 | |||
170 | git reset --hard [sha_du_commit_avant_merge] |
||
171 | |||
172 | 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. |
||
173 | HEAD est un pointeur vers la branche courante, à son niveau de commit le plus récent. |
||
174 | |||
175 | En supposant que tu as poussé tes commit précédent sur origin/master, |
||
176 | le mieux est encore de faire git merge <branche>, puis quand tu as |
||
177 | fini le merge tu fait git diff origin/master. Si ça convient pas tu |
||
178 | fais git reset --hard origin/master; ou git push sinon. |
||
179 | |||
180 | ============================================================ |
||
181 | Pour annuler un commit particulier, sans perturber ceux effectués entre temps: |
||
182 | 12:05 steph@hpcrob ~/gepi_git_officiel/gepi(release-1.6.1) $ git merge marc/no_stack_overflow |
||
183 | Updating e66cd62..d9ef04c |
||
184 | Fast-forward |
||
185 | lib/share.inc.php | 15 +++++++++++++-- |
||
186 | 1 files changed, 13 insertions(+), 2 deletions(-) |
||
187 | 12:06 steph@hpcrob ~/gepi_git_officiel/gepi(release-1.6.1) $ |
||
188 | |||
189 | git revert d9ef04c58 |
||
190 | ============================================================ |