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 [2016/01/15 12:21] luc |
git [2023/11/08 21:12] (Version actuelle) luc |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ===== GIT ===== | + | ====== GIT ====== |
- | + | ||
- | [[gitManageWebsite|manager un site web via git]] | + | |
Ah, git... tout est dit, non ?\\ | Ah, git... tout est dit, non ?\\ | ||
Ligne 9: | Ligne 7: | ||
\\ | \\ | ||
On trouve pas mal de "super tutos", | On trouve pas mal de "super tutos", | ||
+ | La plupart des explications de cet article viennent de http:// | ||
\\ | \\ | ||
Outils pratiques : | Outils pratiques : | ||
* [[http:// | * [[http:// | ||
- | * [[http:// | + | * [[http:// |
+ | * [[https:// | ||
- | ==== CONCEPTS ==== | + | ===== CONCEPTS |
+ | |||
+ | ==== Principes de base ==== | ||
Git est un **gestionnaire de version**, il sert à conserver la version d'un fichier entre chaque changement, et permet de récupérer à tout moment l' | Git est un **gestionnaire de version**, il sert à conserver la version d'un fichier entre chaque changement, et permet de récupérer à tout moment l' | ||
Ligne 20: | Ligne 22: | ||
Git est **décentralisé**, | Git est **décentralisé**, | ||
- | === Principes de base === | + | ==== Les 3 états, les 3 zones ==== |
Git possède 3 états dans lesquels peuvent être les fichiers : | Git possède 3 états dans lesquels peuvent être les fichiers : | ||
Ligne 28: | Ligne 30: | ||
Un fichier doit passer par la case staged avant d' | Un fichier doit passer par la case staged avant d' | ||
On va voir par la suite comment fonctionner avec ces états et comment passer de l'un à l' | On va voir par la suite comment fonctionner avec ces états et comment passer de l'un à l' | ||
- | \\ | + | |
- | \\ | + | ==== Comprendre ==== |
+ | |||
+ | === Commit === | ||
+ | Un commit contient un index (liens vers les fichiers), un message de commit, et un lien vers l' | ||
+ | ça peut paraître obscur ou incomplet (ça l'est surement), mais ces histoires de pointeurs est à approfondir, | ||
+ | |||
+ | === Stockage des fichiers === | ||
Git conserve chaque fichier intégralement. Si entre 2 commit un fichier ne change pas, le fichier n'est pas sauvegardé mais un lien vers le fichier du commit précédent est fait. Cela permet de ne pas consommer trop de place en gardant une vitesse de traitement convenable (contrairement aux autres systèmes qui ne conservent que des delta entre les différentes versions, certes utile pour optimiser l' | Git conserve chaque fichier intégralement. Si entre 2 commit un fichier ne change pas, le fichier n'est pas sauvegardé mais un lien vers le fichier du commit précédent est fait. Cela permet de ne pas consommer trop de place en gardant une vitesse de traitement convenable (contrairement aux autres systèmes qui ne conservent que des delta entre les différentes versions, certes utile pour optimiser l' | ||
- | === Obtenir de l'aide === | + | ==== Obtenir de l' |
< | < | ||
# Par exemple sur la fonctionnalité config : | # Par exemple sur la fonctionnalité config : | ||
Ligne 38: | Ligne 46: | ||
</ | </ | ||
- | ==== CONFIG ==== | + | ===== CONFIG |
< | < | ||
Ligne 63: | Ligne 71: | ||
- | ==== CREER UN DEPOT ==== | + | ===== CREER UN DEPOT ===== |
< | < | ||
Ligne 76: | Ligne 84: | ||
- | ==== TENIR UN DEPÔT (en fait une branche) A JOUR ==== | + | ===== TENIR UN DEPÔT (en fait une branche) A JOUR ===== |
Toutes les commandes qui suivent permettent de tenir à jour la branche actuelle. Voir le paragraphe suivant pour la gestion des branches. | Toutes les commandes qui suivent permettent de tenir à jour la branche actuelle. Voir le paragraphe suivant pour la gestion des branches. | ||
Ligne 150: | Ligne 158: | ||
</ | </ | ||
- | === Astuces === | + | ==== Astuces |
Pour ignorer des fichiers, il faut mettre leur nom dans le fichier '' | Pour ignorer des fichiers, il faut mettre leur nom dans le fichier '' | ||
< | < | ||
Ligne 156: | Ligne 164: | ||
</ | </ | ||
- | === Tag === | + | ==== Tag ==== |
< | < | ||
Ligne 179: | Ligne 187: | ||
- | === Comprendre === | ||
- | Un commit contient un index (liens vers les fichiers), un message de commit, et un lien vers l' | ||
- | ça peut paraître obscur ou incomplet (ça l'est surement), mais ces histoires de pointeurs est à approfondir, | ||
- | + | ===== GESTION DES DEPÔTS DISTANTS | |
- | ==== GESTION DES DEPÔTS DISTANTS ==== | + | |
La commande '' | La commande '' | ||
Ligne 197: | Ligne 201: | ||
# ajouter un nouveau dépôt distant | # ajouter un nouveau dépôt distant | ||
git remote add REMOTE_NAME URL | git remote add REMOTE_NAME URL | ||
+ | |||
+ | # pour link un dépot distant avec une branche distante (pour avoir que git push et git pull) | ||
+ | git push -u REMOTE_NAME BRANCH_NAME | ||
# enlever un dépot distant | # enlever un dépot distant | ||
Ligne 218: | Ligne 225: | ||
- | ==== BRANCHES ==== | + | ===== BRANCHES |
- | === Comprendre === | + | ==== Comprendre |
Une branche n'est en réalité qu'un pointeur vers un commit. | Une branche n'est en réalité qu'un pointeur vers un commit. | ||
Ligne 226: | Ligne 233: | ||
'' | '' | ||
- | === Gestion des branches === | + | ==== Gestion des branches |
< | < | ||
Ligne 259: | Ligne 266: | ||
# supprimer une branche | # supprimer une branche | ||
git branch -d BRANCH_NAME | git branch -d BRANCH_NAME | ||
+ | |||
+ | # git switch et git restore | ||
+ | # Le but de ces 2 commandes est de différencier les 2 activités de `git checkout` | ||
+ | git switch < | ||
+ | git restore < | ||
</ | </ | ||
- | === Conflits === | + | ==== Conflits |
Lorsqu' | Lorsqu' | ||
Ligne 269: | Ligne 281: | ||
- | === Branches distantes === | + | ==== Branches distantes |
Elles sont references sous la forme REMOTE/ | Elles sont references sous la forme REMOTE/ | ||
Elles ne bougent pas sans synchro extérieure ('' | Elles ne bougent pas sans synchro extérieure ('' | ||
Ligne 291: | Ligne 303: | ||
- | === Branches suivies (tracking) === | + | ==== Branches suivies (tracking) ==== |
Ce sont des branches qui ont un lien direct avec une branche d'un depot distant. Ce qui permet d' | Ce sont des branches qui ont un lien direct avec une branche d'un depot distant. Ce qui permet d' | ||
- | |||
< | < | ||
Ligne 312: | Ligne 322: | ||
- | # recupère les changements depuis le depot distant mais NE modifie PAS le working directory | + | # recupère les changements depuis le depot distant |
+ | # mais NE modifie PAS le working directory | ||
git fetch | git fetch | ||
- | git pull | ||
- | # équivaut à : | ||
- | git fetch | ||
- | git merge | ||
</ | </ | ||
- | === RACCOURCIS === | + | ===== RACCOURCIS ===== |
+ | |||
+ | En vrac, pour toutes les sections : | ||
< | < | ||
# créer une branche et basculer vers celle-ci | # créer une branche et basculer vers celle-ci | ||
git checkout -b BRANCH_NAME | git checkout -b BRANCH_NAME | ||
- | = | + | # = |
git branch BRANCH_NAME | git branch BRANCH_NAME | ||
git checkout BRANCH_NAME | git checkout BRANCH_NAME | ||
+ | # récupérer le contenu distant et le mettre dans son working directory | ||
+ | git pull | ||
+ | # = | ||
+ | git fetch | ||
+ | git merge | ||
+ | |||
+ | # Si on a foutu le bazar dans le repertoire mais qu'on a pas commit, | ||
+ | # retrouve le répertoire à l' | ||
+ | git reset --hard HEAD | ||
+ | # Est-ce que ça touche aux fichiers non indexés ? Non | ||
+ | </ | ||
+ | |||
+ | ===== MODELE DE DEVELOPPEMENT ===== | ||
+ | |||
+ | C'est un condensé de cet [[http:// | ||
+ | En gros : | ||
+ | * la branche '' | ||
+ | * la branche '' | ||
+ | * au besoin, des branches temporaires : | ||
+ | * '' | ||
+ | * ou '' | ||
+ | |||
+ | !!! les merge se font avec l' | ||
+ | |||
+ | |||
+ | ===== PROTOCOLES ===== | ||
+ | |||
+ | On peut utiliser plusieurs protocoles selon ce qui est mis à dispo par le serveur pour synchroniser un dépôt git : | ||
+ | |||
+ | <code bash> | ||
+ | # il y a ssh | ||
+ | git clone ssh:// | ||
+ | # PATH peu être relatif ou absolu | ||
+ | |||
+ | # ssh + port spécifique | ||
+ | git clone ss:// | ||
+ | |||
+ | # il y a https (peut être utile pour mettre à jour un service de suiv comme github, gogs ou gitlab | ||
+ | git clone https://URL | ||
</ | </ |