Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 303 lines (215 sloc) 13.41 kb
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
1 // -*- mode: doc; mode: flyspell; coding: utf-8; fill-column: 79; -*-
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
2 == La maîtrise de Git ==
3
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
4 À ce stade, vous devez être capable de parcourir les pages de *git help* et
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
5 comprendre presque tout (en supposant que vous lisez l'anglais). En revanche,
6 retrouver la commande exacte qui résoudra un problème précis peut être
7 fastidieux. Je peux sans doute vous aider à gagner un peu de temps : vous
8 trouverez ci-dessous quelques-unes des recettes dont j'ai déjà eu besoin.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
9
10 === Publication de sources ===
11
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
12 Dans mes projets, Git gère exactement tous les fichiers que je veux placer dans
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
13 une archive afin de la publier. Pour créer une telle archive, j'utilise :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
14
15 $ git archive --format=tar --prefix=proj-1.2.3/ HEAD
16
17 === Gérer le changement ===
18
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
19 Indiquer à Git quels fichiers ont été ajoutés, supprimés ou renommés est
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
20 parfois pénible pour certains projets. À la place, vous pouvez faire :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
21
22 $ git add .
23 $ git add -u
24
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
25 Git cherchera les fichiers du dossier courant et gérera tous les détails tout
26 seul. En remplacement de la deuxième commande 'add', vous pouvez utiliser `git
27 commit -a` pour créer un nouveau commit directement. Lisez *git help ignore*
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
28 pour savoir comment spécifier les fichiers qui doivent être ignorés.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
29
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
30 Vous pouvez effectuer tout cela en une seule passe grâce à :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
31
32 $ git ls-files -d -m -o -z | xargs -0 git update-index --add --remove
33
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
34 Les options *-z* et *-0* empêchent les effets secondaires imprévus dûs au noms
35 de fichiers contenant des caractères étranges. Comme cette commande ajoutent
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
36 aussi les fichiers habituellement ignorés, vous voudrez sûrement utiliser les
37 options `-x` ou `-X`.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
38
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
39 === Mon commit est trop gros ! ===
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
40
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
41 Avez-vous négligé depuis longtemps de faire un commit ? Avez-vous codé
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
42 furieusement et tout oublié de la gestion de versions jusqu'à présent ?
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
43 Faites-vous plein de petits changements sans rapport entre eux parce que c'est
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
44 votre manière de travailler ?
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
45
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
46 Pas de soucis. Faites :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
47
48 $ git add -p
49
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
50 Pour chacune des modifications que vous avez faites, Git vous montrera le bout
51 de code qui a changé et vous demandera si elle doit faire partie du prochain
52 commit. Répondez par "y" (oui) ou par "n" (non). Vous avez aussi d'autres
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
53 options comme celle vous permettant de reporter votre décision ; tapez "?" pour
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
54 en savoir plus.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
55
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
56 Une fois satisfait, tapez :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
57
58 $ git commit
59
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
60 pour faire un commit incluant exactement les modifications qui vous avez
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
61 sélectionnées (les modifications indexées). Soyez certain de ne pas utiliser
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
62 l'option *-a* sinon Git fera un commit incluant toutes vos modifications.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
63
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
64 Que faire si vous avez modifié de nombreux fichiers en de nombreux endroits ?
65 Vérifier chaque modification individuellement devient alors rapidement
66 frustrant et abrutissant. Dans ce cas, utilisez la commande *git add -i* dont
67 l'interface est moins facile mais beaucoup plus souple. En quelques touches
68 vous pouvez ajouter ou retirer de votre index (voir ci-dessous) plusieurs
69 fichiers d'un seul coup mais aussi valider ou non chacune des modifications
70 individuellement pour certains fichiers. Vous pouvez aussi utiliser en
71 remplacement la commande *git commit \--interactive* qui effectuera un commit
72 automatiquement quand vous aurez terminé.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
73
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
74 === L'index : l'aire d'assemblage ===
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
75
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
76 Jusqu'ici nous avons réussi à éviter de parler du fameux 'index' de Git mais
77 nous devons maintenant le présenter pour mieux comprendre ce qui
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
78 précède. L'index est une aire d'assemblage temporaire. Git ne transfert que
79 très rarement de données depuis votre dossier de travail directement vers votre
80 historique. En fait, Git copie d'abord ces données dans l'index puis il copie
81 toutes ces données depuis l'index vers leur destination finale.
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
82
83 Un *commit -a*, par exemple, est en fait un processus en deux temps. La
84 première étape consiste à construire dans l'index un instantané de l'état
85 actuel de tous les fichiers suivis par Git. La seconde étape enregistre cet
86 instantané de manière permanente dans l'historique. Effectuer un commit sans
87 l'option *-a* réalise uniquement cette deuxième étape et cela n'a de sens
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
88 qu'après avoir effectué des commandes qui change l'index, telle que *git add*.
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
89
90 Habituellement nous pouvons ignorer l'index et faire comme si nous échangions
91 directement avec l'historique. Dans certaines occasions, nous voulons un
92 contrôle fin et nous gérons donc l'index. Nous plaçons dans l'index un
93 instantané de certaines modifications (mais pas toutes) et enregistrons de
94 manière permanente cet instantané soigneusement construit.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
95
3efb7f9 fr: fin de traduction de fr/grandmaster.txt
Paul Gaborit authored
96 === Ne perdez pas la tête ===
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
97
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
98 Le tag HEAD est comme un curseur qui pointe habituellement vers le tout dernier
99 commit et qui avance à chaque commit. Certaines commandes Git vous permettent
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
100 de le déplacer. Par exemple :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
101
102 $ git reset HEAD~3
103
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
104 déplacera HEAD trois commits en arrière. À partir de là, toutes les commandes
105 Git agiront comme si vous n'aviez jamais fait ces trois commits, même si vos
106 fichier restent dans leur état présent. Voir les pages d'aide pour quelques
107 usages intéressants.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
108
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
109 Mais comment faire pour revenir vers le futur ? Les commits passés ne savent
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
110 rien du futur.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
111
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
112 Si vous connaissez l'empreinte SHA1 du HEAD original, faites alors :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
113
114 $ git reset 1b6d
115
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
116 Mais que faire si vous ne l'avez pas regardé ? Pas de panique : pour des
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
117 commandes comme celle-ci, Git enregistre la valeur originale de HEAD dans un
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
118 tag nommé ORIG_HEAD et vous pouvez revenir sain et sauf via :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
119
120 $ git reset ORIG_HEAD
121
122 === Chasseur de tête ===
123
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
124 Peut-être que ORIG_HEAD ne vous suffit pas. Peut-être venez-vous de vous
125 apercevoir que vous avez fait une monumentale erreur et que vous devez revenir
126 à une ancienne version d'une branche oubliée depuis longtemps.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
127
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
128 Par défaut, Git conserve un commit au moins deux semaine même si vous avez
129 demandé à Git de détruire la branche qui le contient. La difficulté consiste à
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
130 retrouver l'empreinte appropriée. Vous pouvez toujours explorer les différentes
131 valeurs d'empreinte trouvées dans `.git/objects` et retrouver celle que vous
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
132 cherchez par essais et erreurs. Mais il existe un moyen plus simple.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
133
e2b0159 @Nioub FR: some more mispellings.
Nioub authored
134 Git enregistre l'empreinte de chaque commit qu'il traite dans `.git/logs`. Le
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
135 sous-dossier `refs` contient l'historique de toute l'activité de chaque
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
136 branche alors que le fichier `HEAD` montre chaque valeur d'empreinte que HEAD a
137 pu prendre. Ce dernier peut donc servir à retrouver les commits d'une branche
138 qui a été accidentellement élaguée.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
139
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
140 La commande reflog propose une interface sympa vers ces fichiers de
141 log. Essayez:
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
142
143 $ git reflog
144
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
145 Au lieu de copier/coller une empreinte listée par reflog, essayez :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
146
147 $ git checkout "@{10 minutes ago}"
148
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
149 Ou basculez vers le cinquième commit précédemment visité via :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
150
151 $ git checkout "@{5}"
152
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
153 Voir la section ``Specifying Revisions'' de *git help rev-parse* pour en savoir
154 plus.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
155
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
156 Vous pouvez configurer une plus longue période de rétention pour les commits
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
157 condamnés. Par exemple :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
158
159 $ git config gc.pruneexpire "30 days"
160
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
161 signifie qu'un commit effacé ne le sera véritablement qu'après 30 jours et
162 lorsque $git gc* tournera.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
163
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
164 Vous pouvez aussi désactiver le déclenchement automatique de *git gc* :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
165
166 $ git config gc.auto 0
167
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
168 auquel cas les commits ne seront véritablement effacés que lorsque vous
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
169 lancerez *git gc* manuellement.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
170
cce0d22 @polgab fr: traduction en cours fr/grandmaster.txt
polgab authored
171 === Construire au-dessus de Git ===
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
172
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
173 À la manière UNIX, la conception de Git permet son utilisation comme un
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
174 composant de bas niveau d'autres programmes tels que des interfaces graphiques
175 ou web, des interfaces en ligne de commandes alternatives, des outils de
176 gestion de patch, des outils d'importation et de conversion, etc. En fait,
177 certaines commandes Git sont de simples scripts s'appuyant sur les commandes de
178 base, comme des nains sur des épaules de géants. Avec un peu de bricolage, vous
179 pouvez adapter Git à vos préférences.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
180
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
181 Une astuce facile consiste à créer des alias Git pour raccourcir les commandes
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
182 que vous utilisez le plus fréquemment :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
183
184 $ git config --global alias.co checkout
cce0d22 @polgab fr: traduction en cours fr/grandmaster.txt
polgab authored
185 $ git config --global --get-regexp alias # affiche les alias connus
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
186 alias.co checkout
cce0d22 @polgab fr: traduction en cours fr/grandmaster.txt
polgab authored
187 $ git co foo # identique à 'git checkout foo'
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
188
e2b0159 @Nioub FR: some more mispellings.
Nioub authored
189 Une autre astuce consiste à intégrer le nom de la branche courante dans votre
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
190 prompt ou dans le titre de la fenêtre. L'invocation de :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
191
192 $ git symbolic-ref HEAD
193
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
194 montre le nom complet de la branche courante. En pratique, vous souhaiterez
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
195 probablement enlever "refs/heads/" et ignorer les erreurs :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
196
197 $ git symbolic-ref HEAD 2> /dev/null | cut -b 12-
198
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
199 Le sous-dossier +contrib+ de Git est une mine d'outils construits au-dessus de
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
200 Git. Un jour, certains d'entre eux pourraient être promus au rang de commandes
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
201 officielles. Dans Debian et Ubuntu, ce dossier est
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
202 +/usr/share/doc/git-core/contrib+.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
203
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
204 L'un des plus populaires de ces scripts est +workdir/git-new-workdir+. Grâce à
205 des liens symboliques intelligents, ce script crée un nouveau dépôt dont
206 l'historique est partagé avec le dépôt original.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
207
cce0d22 @polgab fr: traduction en cours fr/grandmaster.txt
polgab authored
208 $ git-new-workdir un/existant/depot nouveau/repertoire
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
209
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
210 Le nouveau dossier et ses fichiers peuvent être vus comme un clone, sauf que
211 l'historique est partagé et que les deux arbres des versions restent
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
212 automatiquement synchrones. Nul besoin de merge, push ou pull.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
213
cce0d22 @polgab fr: traduction en cours fr/grandmaster.txt
polgab authored
214 === Audacieuses acrobaties ===
215
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
216 À ce jour, Git fait tout son possible pour que l'utilisateur ne puisse pas
217 effacer accidentellement des données. Mais si vous savez ce que vous faites,
218 vous pouvez passer outre les garde-fous des principales commandes.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
219
220
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
221 *Checkout* : des modifications non intégrées (via commit) peuvent causer
222 l'échec d'un checkout. Pour détruire vos modifications et réussir quoi qu'il
223 arrive un checkout d'un commit donné, utilisez l'option d'obligation :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
224
225 $ git checkout -f HEAD^
226
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
227 Inversement, si vous spécifiez des chemins particuliers pour un checkout alors
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
228 il n'y a pas de garde-fous. Le contenu des chemins est silencieusement
229 réécrit. Faites attention lorsque vous utilisez un checkout de cette manière.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
230
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
231 *Reset* : un reset échoue aussi en présence de modifications non
232 intégrées. Pour passer outre, faites :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
233
234 $ git reset --hard 1b6d
235
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
236 *Branch* : la suppression de branches échoue si cela implique la perte de
237 certains commits. Par forcer la suppression, tapez :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
238
3efb7f9 fr: fin de traduction de fr/grandmaster.txt
Paul Gaborit authored
239 $ git branch -D branche_morte # à la place de -d
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
240
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
241 De manière similaire, une tentative visant à renommer une branche existante
242 vers le nom d'une autre branche échoue si cela amène la perte de commits. Pour
243 forcer le changement de nom, tapez :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
244
3efb7f9 fr: fin de traduction de fr/grandmaster.txt
Paul Gaborit authored
245 $ git branch -M source target # à la place de -m
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
246
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
247 Contrairement à checkout et reset, ces deux dernières commandes n'effectuent
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
248 pas la suppression des informations immédiatement. Les commits destinés à
249 disparaître sont encore disponibles dans le sous-dossier .git et peuvent encore
250 être retrouvés grâce aux empreintes appropriées tel que retrouvées dans
251 `.git/logs` (voir "Chasseur de tête" ci-dessus). Par défaut, ils sont conservés
252 au moins deux semaines.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
253
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
254 *Clean* : certaines commandes Git refusent de s'exécuter pour ne pas
255 écraser des fichiers non suivis. Si vous êtes certain que tous ces fichiers et
256 dossiers peuvent être sacrifiés alors effacez-les sans pitié via :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
257
258 $ git clean -f -d
259
3efb7f9 fr: fin de traduction de fr/grandmaster.txt
Paul Gaborit authored
260 Ensuite, la commande trop prudente fonctionnera !
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
261
3efb7f9 fr: fin de traduction de fr/grandmaster.txt
Paul Gaborit authored
262 === Se prémunir des commits erronés ===
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
263
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
264 Des erreurs stupides encombrent mes dépôts. Les plus effrayantes sont dues à
265 des fichiers manquants car oubliés lors des *git add*. D'autres erreurs moins
266 graves concernent les espaces blancs inutiles ou les conflits de fusion non
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
267 résolus : bien qu'inoffensives, j'aimerais qu'elles n'apparaissent pas dans les
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
268 versions publiques.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
269
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
270 Si seulement je m'en étais prémuni en utilisant un _hook_ (un crochet) pour
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
271 m'alerter de ces problèmes :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
272
273 $ cd .git/hooks
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
274 $ cp pre-commit.sample pre-commit # Vieilles versions de Git : chmod +x pre-commit
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
275
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
276 Maintenant Git empêchera un commit s'il détecte des espace inutiles ou s'il
277 reste des conflits de fusion non résolus.
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
278
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
279 Pour gérer ce guide, j'ai aussi ajouté les lignes ci-dessous au début de mon
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
280 hook *pre-commit* pour me prémunir de mes inattentions :
4778845 fr: traduction en cours de fr/grandmaster.txt
Paul Gaborit authored
281
282 if git ls-files -o | grep '\.txt$'; then
283 echo FAIL! Untracked .txt files.
284 exit 1
285 fi
286
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
287 Plusieurs opération de Git acceptent les hooks ; voir *git help hooks*. Nous
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
288 avons déjà utilisé le hook *post-update* lorsque nous avons parlé de Git
2f8c802 @polgab review of fr/grandmaster.txt
polgab authored
289 au-dessus de HTTP. Celui-ci se déclenche à chaque mouvement de HEAD. Le script
290 d'exemple post-update met à jour les fichiers Git nécessaires à une
291 communication au-dessus de transports agnostiques tels que HTTP.
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
292
293 // LocalWords: doc flyspell coding utf fill-column Git git help tar prefix add
294 // LocalWords: HEAD ls-files xargs update-index remove Faites-vous staged tag
69fc5ee @polgab ajout des espaces insécables et remplacement de 'hash' par 'empreinte'.
polgab authored
295 // LocalWords: reset commits SHA ORIG venez-vous refs reflog log checkout
e3941ae @polgab fr: entete emacs - passage en 79 colonnes
polgab authored
296 // LocalWords: ago Specifying Revisions rev-parse config gc.pruneexpire days
297 // LocalWords: gc gc.auto run d'UNIX web patch alias.co get-regexp co foo cut
298 // LocalWords: symbolic-ref heads contrib Debian Ubuntu workdir repertoire cd
299 // LocalWords: git-new-workdir merge push hard Branch branch target Clean hook
300 // LocalWords: effacez-les clean qu'inoffensives hooks cp pre-commit.sample
301 // LocalWords: pre-commit chmod grep txt then echo FAIL Untracked post-update
302 // LocalWords: HTTP
Something went wrong with that request. Please try again.