|
@@ -4,6 +4,10 @@ title: "Dépôt local"
|
|
date: 2016-03-31
|
|
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
|
|
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).
|
|
dossier classique que l'on demande à Git de versionner (journaliser).
|
|
|
|
|
|
@@ -41,13 +45,17 @@ dans notre projet.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
-Et on affiche l'état du dépôt.
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
|
|
+On affiche l'état du dépôt.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
Git nous indique que le fichier `papier.tex` existe bien dans le dossier
|
|
Git nous indique que le fichier `papier.tex` existe bien dans le dossier
|
|
(ainsi qu'un fichier de sauvegarde), mais qu'il ne fait pas partie du dépôt.
|
|
(ainsi qu'un fichier de sauvegarde), mais qu'il ne fait pas partie du dépôt.
|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
Pour ajouter un fichier au dépôt, il faut utiliser la commande `git add`.
|
|
Pour ajouter un fichier au dépôt, il faut utiliser la commande `git add`.
|
|
|
|
|
|

|
|

|
|
@@ -57,6 +65,8 @@ commits (journalisation), ce qu'on peut vérifier avec un `git status`.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
Si on représente le graphe des commits correspondant à notre projet,
|
|
Si on représente le graphe des commits correspondant à notre projet,
|
|
on a pour l'instant qu'un état courant non validé.
|
|
on a pour l'instant qu'un état courant non validé.
|
|
|
|
|
|
@@ -73,6 +83,8 @@ La commande à lancer pour valider toutes les modifications est `git commit -a`.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
Git lance alors l'éditeur de texte pour le message de commit.
|
|
Git lance alors l'éditeur de texte pour le message de commit.
|
|
Le message est pré-rempli avec des informations concernant le commit. Ces
|
|
Le message est pré-rempli avec des informations concernant le commit. Ces
|
|
informations vous permettent de vérifier que le commit correspond bien à ce que
|
|
informations vous permettent de vérifier que le commit correspond bien à ce que
|
|
@@ -86,6 +98,8 @@ train de valider puis enregistrez et quittez.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
Git crée alors le nouveau commit, qui valide ici le fichier `papier.tex`.
|
|
Git crée alors le nouveau commit, qui valide ici le fichier `papier.tex`.
|
|
|
|
|
|

|
|

|
|
@@ -94,6 +108,8 @@ Vous pouvez le vérifier avec un `git status`.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
Si on représente le graphe des commits, on a désormais un état validé (un
|
|
Si on représente le graphe des commits, on a désormais un état validé (un
|
|
commit), qui correspond actuellement au `master` (dernier commit) et au `HEAD`
|
|
commit), qui correspond actuellement au `master` (dernier commit) et au `HEAD`
|
|
(état courant des fichiers).
|
|
(état courant des fichiers).
|
|
@@ -103,14 +119,19 @@ commit), qui correspond actuellement au `master` (dernier commit) et au `HEAD`
|
|
## 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
|
|
Git est très utile pour gérer des fichiers textes que l'on modifie
|
|
-régulièrement. En revanche, il n'est pas adapté pour gérer des fichiers dans un
|
|
|
|
|
|
+régulièrement. En revanche :
|
|
|
|
+
|
|
|
|
+- Il n'est pas adapté pour gérer des fichiers dans un
|
|
format non-textuel (images, données compressées, documents word...). Si on
|
|
format non-textuel (images, données compressées, documents word...). Si on
|
|
ajoute un tel fichier dans le dépôt alors à chaque modification, Git stockera
|
|
ajoute un tel fichier dans le dépôt alors à chaque modification, Git stockera
|
|
une nouvelle copie complète (au lieu de stocker uniquement les lignes qui ont
|
|
une nouvelle copie complète (au lieu de stocker uniquement les lignes qui ont
|
|
changé), ce qui est inefficace.
|
|
changé), ce qui est inefficace.
|
|
|
|
+- D'autre part, il est inutile de versionner les fichiers autogénérés (créés
|
|
|
|
+automatiquement).
|
|
|
|
+
|
|
|
|
+* * * *
|
|
|
|
|
|
-D'autre part, il est inutile de versionner les fichiers autogénérés (créés
|
|
|
|
-automatiquement). Par exemple, si on compile le code LaTeX de notre projet...
|
|
|
|
|
|
+Par exemple, si on compile le code LaTeX de notre projet...
|
|
|
|
|
|

|
|

|
|
|
|
|
|
@@ -118,7 +139,9 @@ automatiquement). Par exemple, si on compile le code LaTeX de notre projet...
|
|
|
|
|
|

|
|

|
|
|
|
|
|
-Pour les ignorer lors des `git status`, il suffit de les indiquer dans un
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
|
|
+Pour ignorer des fichiers lors des `git status`, il suffit de les indiquer dans un
|
|
fichier `.gitignore`, dans le répertoire principal du projet. Dans le
|
|
fichier `.gitignore`, dans le répertoire principal du projet. Dans le
|
|
`.gitignore`, on peut indiquer des noms de fichier complets (par exemple,
|
|
`.gitignore`, on peut indiquer des noms de fichier complets (par exemple,
|
|
`papier.pdf`) ou utiliser des motifs de noms (par exemple, `*.log`).
|
|
`papier.pdf`) ou utiliser des motifs de noms (par exemple, `*.log`).
|
|
@@ -129,11 +152,15 @@ On vérifie qu'ils n'apparaissent plus lors des `git status`.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
Sur le graphe des commits, on a maintenant un nouvel état courant `HEAD` non
|
|
Sur le graphe des commits, on a maintenant un nouvel état courant `HEAD` non
|
|
commité, le `master` correspondant toujours au dernier commit.
|
|
commité, le `master` correspondant toujours au dernier commit.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
Il est courant d'ajouter le `.gitignore` au dépôt, ainsi qu'un
|
|
Il est courant d'ajouter le `.gitignore` au dépôt, ainsi qu'un
|
|
fichier `README.md` qui servira de page d'accueil au format
|
|
fichier `README.md` qui servira de page d'accueil au format
|
|
[markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).
|
|
[markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).
|
|
@@ -159,6 +186,8 @@ d'une commande (par exemple ici, `git help mv`).
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
De même, la commande `git rm` permet de supprimer un fichier versionné.
|
|
De même, la commande `git rm` permet de supprimer un fichier versionné.
|
|
|
|
|
|

|
|

|
|
@@ -176,11 +205,15 @@ Ce qui correspond au graphe suivant.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
La commande `git log` (ou `git log --abbrev-commit`) permet d'afficher
|
|
La commande `git log` (ou `git log --abbrev-commit`) permet d'afficher
|
|
l'historique des commits.
|
|
l'historique des commits.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
On peut également le voir avec un client graphique comme `gitg`.
|
|
On peut également le voir avec un client graphique comme `gitg`.
|
|
|
|
|
|

|
|

|
|
@@ -214,6 +247,8 @@ La commande `git tag` permet d'étiqueter des commits.
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
Ces étiquettes permettent d'indiquer des versions du projet et de revenir plus
|
|
Ces étiquettes permettent d'indiquer des versions du projet et de revenir plus
|
|
facilement à un commit particulier.
|
|
facilement à un commit particulier.
|
|
|
|
|
|
@@ -229,6 +264,8 @@ correspondantes**, qui sont alors regroupées dans l'état courant, non commité
|
|
|
|
|
|

|
|

|
|
|
|
|
|
|
|
+* * * *
|
|
|
|
+
|
|
La commande `git reset --hard 13a...` est équivalente à la commande précédente
|
|
La commande `git reset --hard 13a...` est équivalente à la commande précédente
|
|
sauf qu'elle **supprime les modifications correspondantes**.
|
|
sauf qu'elle **supprime les modifications correspondantes**.
|
|
Les fichiers sont donc remis dans l'état du commit « 13a... », et `master` et
|
|
Les fichiers sont donc remis dans l'état du commit « 13a... », et `master` et
|
|
@@ -236,9 +273,7 @@ Les fichiers sont donc remis dans l'état du commit « 13a... », et `master
|
|
|
|
|
|

|
|

|
|
|
|
|
|
-## Résumé et méthode de travail
|
|
|
|
-
|
|
|
|
-Résumé des commandes Git précédentes :
|
|
|
|
|
|
+## Résumé
|
|
|
|
|
|
---|---|
|
|
---|---|
|
|
`git init` | initialise le dossier courant (nouveau dépôt Git) |
|
|
`git init` | initialise le dossier courant (nouveau dépôt Git) |
|
|
@@ -257,7 +292,7 @@ Résumé des commandes Git précédentes :
|
|
`git reset <commit>` | supprime des commits et regroupe les modifications correspondantes dans l'état courant|
|
|
`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|
|
|
`git reset --hard <commit>` | supprime des commits ainsi que les modifications correspondantes|
|
|
|
|
|
|
-Quelques conseils de méthode de travail :
|
|
|
|
|
|
+## Conseils
|
|
|
|
|
|
- Privilégiez les petits dépôts, correspondant à différents travaux, plutôt
|
|
- 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.
|
|
qu'un gros dépôt regroupant tous vos travaux de l'année.
|