-
1. DƩmarrage rapide
-
2. Les bases de Git
-
3. Les branches avec Git
-
4. Git sur le serveur
- 4.1 Protocoles
- 4.2 Installation de Git sur un serveur
- 4.3 GƩnƩration des clƩs publiques SSH
- 4.4 Mise en place du serveur
- 4.5 DƩmon (Daemon) Git
- 4.6 HTTP intelligent
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Git hƩbergƩ
- 4.10 RƩsumƩ
-
5. Git distribuƩ
-
6. GitHub
-
7. Utilitaires Git
- 7.1 SƩlection des versions
- 7.2 Indexation interactive
- 7.3 Remisage et nettoyage
- 7.4 Signer votre travail
- 7.5 Recherche
- 7.6 RƩƩcrire lāhistorique
- 7.7 Reset dƩmystifiƩ
- 7.8 Fusion avancƩe
- 7.9 Rerere
- 7.10 DƩboguer avec Git
- 7.11 Sous-modules
- 7.12 Empaquetage (bundling)
- 7.13 Replace
- 7.14 Stockage des identifiants
- 7.15 RƩsumƩ
-
8. Personnalisation de Git
- 8.1 Configuration de Git
- 8.2 Attributs Git
- 8.3 Crochets Git
- 8.4 Exemple de politique gƩrƩe par Git
- 8.5 RƩsumƩ
-
9. Git et les autres systĆØmes
- 9.1 Git comme client
- 9.2 Migration vers Git
- 9.3 RƩsumƩ
-
10. Les tripes de Git
- 10.1 Plomberie et porcelaine
- 10.2 Les objets de Git
- 10.3 RƩfƩrences Git
- 10.4 Fichiers groupƩs
- 10.5 La refspec
- 10.6 Les protocoles de transfert
- 10.7 Maintenance et rƩcupƩration de donnƩes
- 10.8 Les variables dāenvironnement
- 10.9 RƩsumƩ
-
A1. Annexe A: Git dans dāautres environnements
- A1.1 Interfaces graphiques
- A1.2 Git dans Visual Studio
- A1.3 Git dans Visual Studio Code
- A1.4 Git dans IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git dans Sublime Text
- A1.6 Git dans Bash
- A1.7 Git dans Zsh
- A1.8 Git dans PowerShell
- A1.9 RƩsumƩ
-
A2. Annexe B: Embarquer Git dans vos applications
- A2.1 Git en ligne de commande
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Commandes Git
- A3.1 Installation et configuration
- A3.2 Obtention et crƩation des projets
- A3.3 Capture dāinstantanĆ© basique
- A3.4 CrƩation de branches et fusion
- A3.5 Partage et mise Ć jour de projets
- A3.6 Inspection et comparaison
- A3.7 DƩbogage
- A3.8 Patchs
- A3.9 Courriel
- A3.10 SystĆØmes externes
- A3.11 Administration
- A3.12 Commandes de plomberie
7.2 Utilitaires Git - Indexation interactive
Indexation interactive
Git propose quelques scripts qui rendent les opĆ©rations en ligne de commande plus simples. Nous allons Ć prĆ©sent dĆ©couvrir des commandes interactives vous permettant de choisir les fichiers ou les parties dāun fichier Ć incorporer Ć un commit. Ces outils sont particuliĆØrement pratiques si vous modifiez un grand nombre de fichiers et que vous souhaitez valider ces changements en modifications plus atomiques plutĆ“t que dāun tenant. De la sorte, vous vous assurez que vos commits sont des ensembles cohĆ©rents de modifications et quāils peuvent ĆŖtre facilement revus par vos collaborateurs.
Si vous exƩcutez git add
avec lāoption -i
ou --interactive
, Git entre en mode interactif et affiche quelque chose commeĀ :
$ git add -i
staged unstaged path
1: unchanged +0/-1 TODO
2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
Vous vous apercevrez que cette commande propose une vue bien diffĆ©rente de votre indexĀ ; en gros, cāest la mĆŖme information que vous auriez obtenue avec git status
mais en plus succinct et plus instructif.
Cela liste les modifications que vous avez indexées à gauche et celles hors index à droite.
En dessous vient la section des commandes (Commands). Vous aurez accĆØs Ć un certain nombre dāactions, notamment indexer des fichiers, les enlever de lāindex, indexer des parties de fichiers, ajouter des fichiers non indexĆ©s, et vĆ©rifier les diffĆ©rences de ce que vous avez indexĆ©.
Indexation et dƩsindexation des fichiers
Si vous tapez 2
ou u
au prompt What now>
, le script vous demande quels fichiers vous voulez indexerĀ :
What now> 2
staged unstaged path
1: unchanged +0/-1 TODO
2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
Update>>
Pour indexer les fichiers TODO et index.html, vous pouvez taper ces nombresĀ :
Update>> 1,2
staged unstaged path
* 1: unchanged +0/-1 TODO
* 2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
Update>>
Le caractĆØre *
au dƩbut de la ligne de chaque fichier indique que celui-ci est sƩlectionnƩ.
Si vous tapez EntrĆ©e sur lāinvite Update>>
, Git prend tout ce qui est sĆ©lectionnĆ© et lāindexe pour vousĀ :
Update>>
updated 2 paths
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 1
staged unstaged path
1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
à présent, vous pouvez voir que les fichiers TODO et index.html sont indexés (staged en anglais) et que simplegit.rb
ne lāest toujours pas.
Si vous souhaitez enlever de lāindex le fichier TODO, utilisez 3
(ou r
pour revert en anglais)Ā :
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 3
staged unstaged path
1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Revert>> 1
staged unstaged path
* 1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Revert>> [enter]
reverted one path
Un aperƧu rapide Ć votre statut Git et vous pouvez voir que vous avez enlevĆ© le fichier TODO de lāindexĀ :
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 1
staged unstaged path
1: unchanged +0/-1 TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Pour voir la modification que vous avez indexƩe, utilisez 6
ou d
(pour diffƩrence).
Cela vous affiche la liste des fichiers indexƩs et vous pouvez choisir ceux pour lesquels vous voulez consulter la diffƩrence.
Cāest Ć©quivalent Ć git diff --cached
en ligne de commandeĀ :
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 6
staged unstaged path
1: +1/-1 nothing index.html
Review diff>> 1
diff --git a/index.html b/index.html
index 4d07108..4335f49 100644
--- a/index.html
+++ b/index.html
@@ -16,7 +16,7 @@ Date Finder
<p id="out">...</p>
-<div id="footer">contact : support@github.com</div>
+<div id="footer">contact : email.support@github.com</div>
<script type="text/javascript">
Avec ces commandes Ć©lĆ©mentaires, vous pouvez utiliser lāajout interactif pour manipuler votre index un peu plus facilement.
Indexations partielles
Git est Ć©galement capable dāindexer certaines parties dāun fichier.
Par exemple, si vous modifiez en deux endroits votre fichier simplegit.rb
et que vous souhaitez indexer une modification seulement, cela peut se faire très aisément avec Git.
En mode interactif, tapez 5
ou p
(pour patch en anglais).
Git vous demandera quels fichiers vous voulez indexer partiellement, puis, pour chacun des fichiers sélectionnés, il affichera les parties du fichier où il y a des différences et vous demandera si vous souhaitez les indexer, une par une :
diff --git a/lib/simplegit.rb b/lib/simplegit.rb
index dd5ecc4..57399e0 100644
--- a/lib/simplegit.rb
+++ b/lib/simplegit.rb
@@ -22,7 +22,7 @@ class SimpleGit
end
def log(treeish = 'master')
- command("git log -n 25 #{treeish}")
+ command("git log -n 30 #{treeish}")
end
def blame(path)
Stage this hunk [y,n,a,d,/,j,J,g,e,?]?
Ć cette Ć©tape, vous disposez de bon nombre dāoptions.
?
vous liste les actions possibles dont voici une traductionĀ :
Indexer cette partie [y,n,a,d,/,j,J,g,e,?]? ?
y - indexer cette partie
n - ne pas indexer cette partie
a - indexer cette partie et toutes celles restantes dans ce fichier
d - ne pas indexer cette partie ni aucune de celles restantes dans ce fichier
g - sélectionner une partie à voir
/ - chercher une partie correspondant à la regexp donnée
j - laisser cette partie non dƩcidƩe, voir la prochaine partie non encore dƩcidƩe
J - laisser cette partie non dƩcidƩe, voir la prochaine partie
k - laisser cette partie non dƩcidƩe, voir la partie non encore dƩcidƩe prƩcƩdente
K - laisser cette partie non dƩcidƩe, voir la partie prƩcƩdente
s - couper la partie courante en parties plus petites
e - modifier manuellement la partie courante
? - afficher l'aide
En règle générale, vous choisirez y
ou n
pour indexer ou non chacun des blocs, mais tout indexer pour certains fichiers ou remettre à plus tard le choix pour un bloc peut également être utile.
Si vous indexez une partie dāun fichier et une autre non, votre statut ressemblera Ć peu prĆØs Ć ceciĀ :
What now> 1
staged unstaged path
1: unchanged +0/-1 TODO
2: +1/-1 nothing index.html
3: +1/-1 +4/-0 lib/simplegit.rb
Le statut pour le fichier simplegit.rb
est intƩressant.
Il vous montre que quelques lignes sont indexĆ©es et dāautres non.
Vous avez partiellement indexƩ ce fichier.
DĆØs lors, vous pouvez quitter lāajout interactif et exĆ©cuter git commit
pour valider les fichiers partiellement indexƩs.
Enfin, vous pouvez vous passer du mode interactif pour indexer partiellement un fichierĀ ; vous pouvez faire de mĆŖme avec git add -p
ou git add --patch
en ligne de commande.
De plus, vous pouvez utiliser le mode patch pour rƩinitialiser partiellement des fichiers avec la commande reset --patch
, pour extraire des parties de fichiers avec checkout --patch
et pour remiser des parties de fichiers avec stash save --patch
.
Nous explorerons plus en dƩtail chacune des ces commandes quand nous aborderons les usages avancƩs de ces commandes.