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 14:29] 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 === | + | ==== 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 22: | Ligne 22: | ||
Git est **décentralisé**, | Git est **décentralisé**, | ||
- | === Les 3 états, les 3 zones === | + | ==== 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 31: | Ligne 31: | ||
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 === | + | ==== Comprendre |
- | == Commit == | + | === Commit |
Un commit contient un index (liens vers les fichiers), un message de commit, et un lien vers l' | 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, | ça peut paraître obscur ou incomplet (ça l'est surement), mais ces histoires de pointeurs est à approfondir, | ||
- | == Staockage | + | === Stockage |
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 46: | Ligne 46: | ||
</ | </ | ||
- | ==== CONFIG ==== | + | ===== CONFIG |
< | < | ||
Ligne 71: | Ligne 71: | ||
- | ==== CREER UN DEPOT ==== | + | ===== CREER UN DEPOT ===== |
< | < | ||
Ligne 84: | 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 158: | 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 164: | Ligne 164: | ||
</ | </ | ||
- | === Tag === | + | ==== Tag ==== |
< | < | ||
Ligne 191: | Ligne 191: | ||
- | ==== GESTION DES DEPÔTS DISTANTS ==== | + | ===== GESTION DES DEPÔTS DISTANTS |
La commande '' | La commande '' | ||
Ligne 201: | 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 222: | 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 230: | Ligne 233: | ||
'' | '' | ||
- | === Gestion des branches === | + | ==== Gestion des branches |
< | < | ||
Ligne 263: | 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 273: | 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 295: | 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 324: | Ligne 330: | ||
</ | </ | ||
- | ==== RACCOURCIS ==== | + | ===== RACCOURCIS |
En vrac, pour toutes les sections : | En vrac, pour toutes les sections : | ||
Ligne 341: | Ligne 347: | ||
git merge | 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 | ||
</ | </ |