Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
git:gitminimal [2018/11/06 16:29] – modification externe 127.0.0.1 | git:gitminimal [2023/09/20 18:52] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 33: | Ligne 33: | ||
Le contrôle d' | Le contrôle d' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno ~$ ssh-keygen | test@pc-bruno ~$ ssh-keygen | ||
Generating public/ | Generating public/ | ||
Ligne 55: | Ligne 56: | ||
| ..E + | | | ..E + | | ||
+-----------------+ | +-----------------+ | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
Si vous disposez d'un système de gestion des entrepôts (github, redmine, ...) votre clé **publique** peut maintenant être utilisée pour vous authentifier. Par exemple en l' | Si vous disposez d'un système de gestion des entrepôts (github, redmine, ...) votre clé **publique** peut maintenant être utilisée pour vous authentifier. Par exemple en l' | ||
Ligne 64: | Ligne 66: | ||
Git a besoin au minimum de connaitre le nom et l' | Git a besoin au minimum de connaitre le nom et l' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno $ git config --global user.name | test@pc-bruno $ git config --global user.name | ||
test@pc-bruno $ git config --global user.email | test@pc-bruno $ git config --global user.email | ||
test@pc-bruno $ git config --global push.default simple | test@pc-bruno $ git config --global push.default simple | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
===== Utilisation de base ===== | ===== Utilisation de base ===== | ||
Ligne 75: | Ligne 79: | ||
Pour créer un entrepôt, on utilise la commande '' | Pour créer un entrepôt, on utilise la commande '' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno ~$ mkdir monProjet | test@pc-bruno ~$ mkdir monProjet | ||
test@pc-bruno ~$ cd monProjet/ | test@pc-bruno ~$ cd monProjet/ | ||
test@pc-bruno monProjet$ git init | test@pc-bruno monProjet$ git init | ||
Dépôt Git vide initialisé dans / | Dépôt Git vide initialisé dans / | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
Ici nous avons créé un répertoire vide mais il peut s'agit d'un répertoire déjà existant même si il a déjà du contenu. | Ici nous avons créé un répertoire vide mais il peut s'agit d'un répertoire déjà existant même si il a déjà du contenu. | ||
Ligne 86: | Ligne 92: | ||
Pour cloner un repository existant (dont on connait l' | Pour cloner un repository existant (dont on connait l' | ||
- | Par exemple, | + | Par exemple, |
+ | * en ssh pour un projet privé si votre clé à été ajoutée | ||
+ | * en http sinon [[https:// | ||
+ | |||
+ | <note important> | ||
Pour le cloner : | Pour le cloner : | ||
- | <cli> | + | <konsole> |
- | /tmp ❯❯❯ git clone git@github.com: | + | <nowiki> |
+ | /tmp ❯❯❯ git clone git@github.com: | ||
Clonage dans ' | Clonage dans ' | ||
remote: Counting objects: 17, done. | remote: Counting objects: 17, done. | ||
Ligne 98: | Ligne 109: | ||
Vérification de la connectivité... fait. | Vérification de la connectivité... fait. | ||
/tmp ❯❯❯ cd sandboxm1 | /tmp ❯❯❯ cd sandboxm1 | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
le répertoire '' | le répertoire '' | ||
Ligne 117: | Ligne 129: | ||
Quand un entrepôt est créé avec la commande '' | Quand un entrepôt est créé avec la commande '' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
/ | / | ||
origin git@github.com: | origin git@github.com: | ||
origin git@github.com: | origin git@github.com: | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
==== Commandes courantes ==== | ==== Commandes courantes ==== | ||
Ligne 132: | Ligne 146: | ||
L' | L' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno sandboxgit$ git status | test@pc-bruno sandboxgit$ git status | ||
Sur la branche master | Sur la branche master | ||
Ligne 168: | Ligne 183: | ||
rien à valider, la copie de travail est propre | rien à valider, la copie de travail est propre | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
A ce moment, les modifications sont validées mais locales. Il est possible de consulter le journal des modifications avec '' | A ce moment, les modifications sont validées mais locales. Il est possible de consulter le journal des modifications avec '' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno sandboxgit$ git log | test@pc-bruno sandboxgit$ git log | ||
commit af73a0bcec8c38076a86e6758cdb088ce520f485 | commit af73a0bcec8c38076a86e6758cdb088ce520f485 | ||
Ligne 186: | Ligne 203: | ||
dummy fixes #99 closes #99 | dummy fixes #99 closes #99 | ||
... | ... | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
On peut vérifier ce qui a changé à distance ('' | On peut vérifier ce qui a changé à distance ('' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno sandboxgit$ git remote update | test@pc-bruno sandboxgit$ git remote update | ||
Récupération de origin | Récupération de origin | ||
Ligne 198: | Ligne 217: | ||
rien à valider, la copie de travail est propre | rien à valider, la copie de travail est propre | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
Dans ce cas rien n'a changé, et l'on voit bien qu'il y a un commit à pousser. | Dans ce cas rien n'a changé, et l'on voit bien qu'il y a un commit à pousser. | ||
Ligne 204: | Ligne 224: | ||
Nous allons maintenant modifier le fichier '' | Nous allons maintenant modifier le fichier '' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno sandboxgit$ echo " | test@pc-bruno sandboxgit$ echo " | ||
test@pc-bruno sandboxgit$ git add test.txt | test@pc-bruno sandboxgit$ git add test.txt | ||
Ligne 228: | Ligne 249: | ||
To ssh:// | To ssh:// | ||
| | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
Ligne 241: | Ligne 263: | ||
==== Quels fichiers versionner ? ==== | ==== Quels fichiers versionner ? ==== | ||
Tous les fichiers ne doivent pas être déposé sur le système de gestion de version. | Tous les fichiers ne doivent pas être déposé sur le système de gestion de version. | ||
- | Les détails sont donnés ici : http:// | + | Les détails sont donnés ici : http:// |
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Ligne 249: | Ligne 271: | ||
==== Naviguer dans l' | ==== Naviguer dans l' | ||
Comme nous l' | Comme nous l' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno sandboxgit$ git log | test@pc-bruno sandboxgit$ git log | ||
commit 53fa162ffda184e6fdf9fdaa93fc60ae8b24d58a | commit 53fa162ffda184e6fdf9fdaa93fc60ae8b24d58a | ||
Ligne 268: | Ligne 291: | ||
dummy fixes #99 closes #99 | dummy fixes #99 closes #99 | ||
... | ... | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
Nous voyons qu'à chaque commit est associé un haché (SHA-1), par exemple 53fa162ffda184e6fdf9fdaa93fc60ae8b24d58a pour le dernier commit. | Nous voyons qu'à chaque commit est associé un haché (SHA-1), par exemple 53fa162ffda184e6fdf9fdaa93fc60ae8b24d58a pour le dernier commit. | ||
Il est possible de voir ce qui s'est passé pour un commit donné : | Il est possible de voir ce qui s'est passé pour un commit donné : | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno sandboxgit$ git show 53fa162ffda184e6fdf9fdaa93fc60ae8b24d58a | test@pc-bruno sandboxgit$ git show 53fa162ffda184e6fdf9fdaa93fc60ae8b24d58a | ||
commit 53fa162ffda184e6fdf9fdaa93fc60ae8b24d58a | commit 53fa162ffda184e6fdf9fdaa93fc60ae8b24d58a | ||
Ligne 288: | Ligne 313: | ||
hello | hello | ||
+encore du texte | +encore du texte | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
A noter, qu'il est possible de n' | A noter, qu'il est possible de n' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno sandboxgit$ git log --abbrev-commit --pretty=oneline | test@pc-bruno sandboxgit$ git log --abbrev-commit --pretty=oneline | ||
53fa162 Ajout de précisions | 53fa162 Ajout de précisions | ||
af73a0b Création d'un fichier texte à mon nom | af73a0b Création d'un fichier texte à mon nom | ||
... | ... | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
Il est aussi possible de voir ce qui a changé entre deux commit avec la commande '' | Il est aussi possible de voir ce qui a changé entre deux commit avec la commande '' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno sandboxgit$ git diff af73a0b | test@pc-bruno sandboxgit$ git diff af73a0b | ||
diff --git a/test.txt b/test.txt | diff --git a/test.txt b/test.txt | ||
Ligne 309: | Ligne 338: | ||
hello | hello | ||
+encore du texte | +encore du texte | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
==== Traitement de base des conflits ==== | ==== Traitement de base des conflits ==== | ||
Ligne 318: | Ligne 348: | ||
Les commandes suivantes permettent de créer un entrepôt '' | Les commandes suivantes permettent de créer un entrepôt '' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno ~$ mkdir monProjetCentral && cd monProjetCentral && git --bare init | test@pc-bruno ~$ mkdir monProjetCentral && cd monProjetCentral && git --bare init | ||
Dépôt Git vide initialisé dans / | Dépôt Git vide initialisé dans / | ||
Ligne 334: | Ligne 365: | ||
origin / | origin / | ||
origin / | origin / | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
On notera qu'ici on a cloné un entrepôt local, il aurait pu être distant cela ne change rien. On notera aussi qu'il est possible de changer le nom du répertoire contenant le clone. Nous avons donc trois entrepôts : '' | On notera qu'ici on a cloné un entrepôt local, il aurait pu être distant cela ne change rien. On notera aussi qu'il est possible de changer le nom du répertoire contenant le clone. Nous avons donc trois entrepôts : '' | ||
Nous allons maintenant ajouter un fichier README dans '' | Nous allons maintenant ajouter un fichier README dans '' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno ~$ cd monProjet1/ | test@pc-bruno ~$ cd monProjet1/ | ||
test@pc-bruno monProjet1$ echo " | test@pc-bruno monProjet1$ echo " | ||
Ligne 352: | Ligne 385: | ||
To / | To / | ||
* [new branch] | * [new branch] | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
et mettre à jour '' | et mettre à jour '' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno monProjet1$ cd ../ | test@pc-bruno monProjet1$ cd ../ | ||
test@pc-bruno monProjet2$ git pull | test@pc-bruno monProjet2$ git pull | ||
Ligne 363: | Ligne 398: | ||
Depuis / | Depuis / | ||
* [nouvelle branche] master | * [nouvelle branche] master | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
Habituellement, | Habituellement, | ||
Par exemple, on modifie le fichier README dans monProjet1 et on pousse la modification : | Par exemple, on modifie le fichier README dans monProjet1 et on pousse la modification : | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno monProjet1$ echo "Modif depuis 1">> | test@pc-bruno monProjet1$ echo "Modif depuis 1">> | ||
[master 5cebb57] chgt depuis 1 | [master 5cebb57] chgt depuis 1 | ||
Ligne 377: | Ligne 414: | ||
To / | To / | ||
| | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
puis on modifie aussi README dans monProjet2 **sans avoir mis à jour** (donc sans faire de pull). | puis on modifie aussi README dans monProjet2 **sans avoir mis à jour** (donc sans faire de pull). | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno monProjet2$ echo "Modif depuis 2">> | test@pc-bruno monProjet2$ echo "Modif depuis 2">> | ||
test@pc-bruno monProjet2$ git commit -m "chgt depuis 2" && git push | test@pc-bruno monProjet2$ git commit -m "chgt depuis 2" && git push | ||
Ligne 393: | Ligne 432: | ||
astuce: (par exemple 'git pull ...') avant de pousser à nouveau. | astuce: (par exemple 'git pull ...') avant de pousser à nouveau. | ||
astuce: Voir la 'Note à propos des avances rapides' | astuce: Voir la 'Note à propos des avances rapides' | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
Nous avons modifié README à partir d'une version antérieure à celle sur le serveur et donc le push automatique n'est pas possible, il faut d' | Nous avons modifié README à partir d'une version antérieure à celle sur le serveur et donc le push automatique n'est pas possible, il faut d' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno monProjet2$ git pull | test@pc-bruno monProjet2$ git pull | ||
remote: Counting objects: 5, done. | remote: Counting objects: 5, done. | ||
Ligne 407: | Ligne 448: | ||
CONFLIT (contenu) : Conflit de fusion dans README | CONFLIT (contenu) : Conflit de fusion dans README | ||
La fusion automatique a échoué ; réglez les conflits et validez le résultat. | La fusion automatique a échoué ; réglez les conflits et validez le résultat. | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
Dans le cas le contenu du fichier en conflit est modifié par git pour indiquer les différences des versions : | Dans le cas le contenu du fichier en conflit est modifié par git pour indiquer les différences des versions : | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno monProjet2$ cat README | test@pc-bruno monProjet2$ cat README | ||
Hello | Hello | ||
Ligne 418: | Ligne 461: | ||
Modif depuis 1 | Modif depuis 1 | ||
>>>>>>> | >>>>>>> | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
Il faut éditer le fichier (ou utiliser un outils graphique de résolution de conflit) pour remettre le fichier dans un état cohérent c' | Il faut éditer le fichier (ou utiliser un outils graphique de résolution de conflit) pour remettre le fichier dans un état cohérent c' | ||
Ligne 424: | Ligne 468: | ||
Dans notre exemple, nous avons fusionné en utilisant un éditeurs de texte les modifications dans monProjet2. Puis il faut les valider, les pousser dans l' | Dans notre exemple, nous avons fusionné en utilisant un éditeurs de texte les modifications dans monProjet2. Puis il faut les valider, les pousser dans l' | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno monProjet2$ git add README | test@pc-bruno monProjet2$ git add README | ||
test@pc-bruno monProjet2$ git commit -m " | test@pc-bruno monProjet2$ git commit -m " | ||
Ligne 438: | Ligne 483: | ||
To / | To / | ||
| | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
On peut alors éventuellement mettre à jour monProjet1. | On peut alors éventuellement mettre à jour monProjet1. | ||
- | <cli> | + | <konsole> |
+ | <nowiki> | ||
test@pc-bruno monProjet1$ git pull | test@pc-bruno monProjet1$ git pull | ||
remote: Counting objects: 10, done. | remote: Counting objects: 10, done. | ||
Ligne 453: | Ligne 500: | ||
| | ||
1 file changed, 2 insertions(+) | 1 file changed, 2 insertions(+) | ||
- | </cli> | + | </nowiki> |
+ | </ | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> |