-
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.