|
@@ -4,9 +4,7 @@ title: "Dépôt local"
|
|
|
date: 2016-03-31
|
|
|
---
|
|
|
|
|
|
-# Dépôt local
|
|
|
-
|
|
|
-##
|
|
|
+* * * *
|
|
|
|
|
|
L'élément de base d'un projet Git est le dépôt. Il s'agit simplement d'un
|
|
|
dossier classique que l'on demande à Git de versionner (journaliser).
|
|
@@ -15,7 +13,7 @@ Un dépôt Git contient l'ensemble des commits (versions sauvegardées du projet
|
|
|
On peut donc revenir à n'importe quelle version du projet. Généralement, on
|
|
|
appelle `master` la dernière version sauvegardée et `HEAD` la version courante.
|
|
|
|
|
|
-## Initialiser un dépôt
|
|
|
+# Initialiser un dépôt
|
|
|
|
|
|
Allez dans le dossier à versionner puis lancez la commande `git init`.
|
|
|
|
|
@@ -26,7 +24,7 @@ ne voulez plus versionner votre dossier, il suffit de supprimer ce dossier. Le
|
|
|
reste du temps, ne touchez pas à ce dossier si vous n'êtes pas absolument
|
|
|
sûr(e) de ce que vous faites.
|
|
|
|
|
|
-## Afficher l'état d'un dépôt
|
|
|
+# Afficher l'état d'un dépôt
|
|
|
|
|
|
La commande `git status` affiche l'état courant du dépôt : nouveaux fichiers,
|
|
|
fichiers modifiés, fichiers supprimés. Cette commande est très sûre ; elle ne
|
|
@@ -36,7 +34,7 @@ peut rien casser. N'hésitez donc pas à la lancer pour voir où vous en êtes.
|
|
|
|
|
|
La commande `git ls-files` affiche la liste des fichiers versionnés.
|
|
|
|
|
|
-## Ajouter des fichiers dans le dépôt
|
|
|
+# Ajouter des fichiers dans le dépôt
|
|
|
|
|
|
Il faut indiquer explicitement les fichiers que Git doit journaliser.
|
|
|
|
|
@@ -72,7 +70,7 @@ on a pour l'instant qu'un état courant non validé.
|
|
|
|
|
|
![](depot_local_07.svg)
|
|
|
|
|
|
-## Valider les modifications (commit)
|
|
|
+# Valider les modifications (commit)
|
|
|
|
|
|
Après avoir ajouté, modifié ou supprimé des fichiers, on peut valider les
|
|
|
modifications, c'est-à-dire sauvegarder un état du projet (commit). Encore une
|
|
@@ -116,7 +114,7 @@ commit), qui correspond actuellement au `master` (dernier commit) et au `HEAD`
|
|
|
|
|
|
![](depot_local_11.svg)
|
|
|
|
|
|
-## Fichiers autogénérés et .gitignore
|
|
|
+# Fichiers autogénérés et .gitignore
|
|
|
|
|
|
Git est très utile pour gérer des fichiers textes que l'on modifie
|
|
|
régulièrement. En revanche :
|
|
@@ -176,7 +174,7 @@ Après ce `git commit`, on a un nouveau commit correspondant au `master` et au
|
|
|
![](depot_local_16.svg)
|
|
|
|
|
|
|
|
|
-## Renommer et supprimer des fichiers
|
|
|
+# Renommer et supprimer des fichiers
|
|
|
|
|
|
La commande `git mv` permet de renommer un fichier versionné. Il ne faut pas
|
|
|
utiliser la commande système (`mv`) car dans ce cas Git ne saura pas qu'il faut
|
|
@@ -197,7 +195,7 @@ De même, la commande `git rm` permet de supprimer un fichier versionné.
|
|
|
![](depot_local_18.svg)
|
|
|
|
|
|
|
|
|
-## Afficher l'historique des commits
|
|
|
+# Afficher l'historique des commits
|
|
|
|
|
|
Faisons d'abord une modification « commitée » puis une autre non commitée.
|
|
|
|
|
@@ -222,14 +220,14 @@ On peut également le voir avec un client graphique comme `gitg`.
|
|
|
|
|
|
Le « unstaged » correspond aux modifications courantes non commitées (`HEAD`).
|
|
|
|
|
|
-## Supprimer les modifications courantes
|
|
|
+# Supprimer les modifications courantes
|
|
|
|
|
|
La commande `git checkout -- . ` supprime les modifications courantes. Le dépôt revient
|
|
|
alors dans l'état du dernier commit (`master`).
|
|
|
|
|
|
![](depot_local_checkout_01.svg)
|
|
|
|
|
|
-## Revenir à un commit précédent (sans suppression)
|
|
|
+# Revenir à un commit précédent (sans suppression)
|
|
|
|
|
|
La commande `git checkout 3ca...` permet de revenir au commit « 3ca... ». On passe
|
|
|
ainsi dans un mode « détaché » (`HEAD` ne pointe plus sur un commit terminal).
|
|
@@ -241,7 +239,7 @@ Au lieu d'utiliser le numéro de commit, on peut également utiliser les
|
|
|
principal ou `git checkout HEAD~1` pour aller à 1 commit avant le commit
|
|
|
courant...
|
|
|
|
|
|
-## Marquer un commit
|
|
|
+# Marquer un commit
|
|
|
|
|
|
La commande `git tag` permet d'étiqueter des commits.
|
|
|
|
|
@@ -258,7 +256,7 @@ facilement à un commit particulier.
|
|
|
|
|
|
![](depot_local_checkout_03b.svg)
|
|
|
|
|
|
-## Supprimer des commits précédents
|
|
|
+# Supprimer des commits précédents
|
|
|
|
|
|
La commande `git reset 13a...` place le `master` sur le commit « 13a... » et
|
|
|
supprime tous les commits suivants **sans supprimer les modifications
|
|
@@ -275,7 +273,7 @@ Les fichiers sont donc remis dans l'état du commit « 13a... », et `master
|
|
|
|
|
|
![](depot_local_checkout_05.svg)
|
|
|
|
|
|
-## Résumé
|
|
|
+# Résumé
|
|
|
|
|
|
---|---|
|
|
|
`git init` | initialise le dossier courant (nouveau dépôt Git) |
|
|
@@ -294,7 +292,7 @@ Les fichiers sont donc remis dans l'état du commit « 13a... », et `master
|
|
|
`git reset <commit>` | supprime des commits et regroupe les modifications correspondantes dans l'état courant|
|
|
|
`git reset --hard <commit>` | supprime des commits ainsi que les modifications correspondantes|
|
|
|
|
|
|
-## Conseils
|
|
|
+# Conseils
|
|
|
|
|
|
- Privilégiez les petits dépôts, correspondant à différents travaux, plutôt
|
|
|
qu'un gros dépôt regroupant tous vos travaux de l'année.
|
|
@@ -302,7 +300,7 @@ Les fichiers sont donc remis dans l'état du commit « 13a... », et `master
|
|
|
- Évitez de commiter un projet cassé (par exemple, du code qui ne compile pas).
|
|
|
- Ne versionnez pas les fichiers auto-générés.
|
|
|
|
|
|
-## Exercice
|
|
|
+# Exercice
|
|
|
|
|
|
- Créez un nouveau dépôt local, ajoutez des fichiers et faites quelques
|
|
|
modifications+commits ; affichez l'état du dépôt à chaque étape.
|