Weekly backup.

This commit is contained in:
2022-06-04 12:57:39 +02:00
parent e552583393
commit 015b896f65
68 changed files with 3530 additions and 27 deletions

91
20220501191904-git.org Normal file
View File

@@ -0,0 +1,91 @@
:PROPERTIES:
:ID: e93719b3-088d-4fe7-9ef8-fc9a4fd84827
:mtime: 20220524205131
:ctime: 20220501191904
:END:
#+title: Git
* Introduction
* Outil de gestion de versions,
* Créé par L. TORVALDS,
* Fonctionnement décentralisé.
* Commandes
| Commande | Action |
|----------------+--------------------------------------------------------------------------------------------------------------------------------------------------|
| ~git init~ | Crée un nouveau dépôt |
| ~git clone~ | Clone un dépôt distant |
| ~git add~ | Ajoute de nouveaux /blobs/ dans la base des objets pour chaque fichier modifié depuis le dernier commit. Les objets précédents restent inchangés |
| ~git commit~ | Intègre la somme de contrôle SHA-1 d'un /tree/ et les sommes de contrôle des /commits/ parents pour créer un nouvel /commit/ |
| ~git branch~ | Liste les branches |
| ~git merge~ | Fusionne une branche dans une autre |
| ~git rebase~ | Déplace les /commits/ de la branche courante devant les nouveaux /commits/ dune autre branche |
| ~git log~ | Affiche la liste des commits effectués sur une branche |
| ~git push~ | Publie les nouvelles révisions sur le remote |
| ~git pull~ | Récupère les dernières modifications distantes du projet (depuis le Remote) et les fusionne dans la branche courante |
| ~git stash~ | Stocke de côté un état non commité afin deffectuer dautres tâches |
| ~git checkout~ | Annule les modifications effectuées, déplacement sur une référence (branche, hash) |
| ~git switch~ | Changement de branche |
| ~git remote~ | Gestion des remotes |
Pour positionner ~HEAD~ :
* Au commit père : ~git checkout HEAD^~ ou ~git checkout HEAD~1~,
* En cas de plusieurs pères : ~git checkout HEAD^2~ pour positionner au second père,
* Au commit grand-père : ~git checkout HEAD^^~ ou ~git checkout HEAD~2~
~HEAD~ est /detached/ lorsqu'un /checkout/ est effectué sur un /commit/ et non pas une /branch/.
Pour forcer le déplacement d'une branche : ~git branch -f <nom_branche> <commit>~.
Pour retourner en arrière :
* Branche locale : ~git reset <commit>~ (position où nous souhaitons être).
* Différentes options :
* ~--soft~ : le commit sera supprimé mais les changements seront conservés et /stashed/,
* ~--mixed~ (par défaut) : le commit sera supprimé mais les changements seront conservés et /unstashed/,
* ~--hard <commit_ref>~ pour les changements à ne pas conserver.
* Branche distante (/remote/) : ~git revert <commit_ref>~ :
* Création d'un nouveau /commit/ qui inversera les modifications apportées par le ~<commit_ref>~,
* Conservation de l'historique,
* Pour supprimer plusieurs /commit/ consécutifs : ~git revert <older_ref>..<newer_ref>~ (~<older_ref>~~ exclu,
~<newer_ref>~ inclus).
Pour copier une série de commits après l'emplacement actuel (/HEAD/) : ~git cherry-pick <commit_1> <commit_2> <...>~
*Rebase* interractif (~git rebase -i~) permet de :
* Réarranger les /commits/,
* Omettre certains /commits/ (/pick/),
* Ecraser des /commits/.
Pour modifier le dernier commit : ~git commit --amend~.
Pour décrire (/describe/) les changements entre /HEAD/ et le tag le plus récent : ~git describe~ (~git describe <ref>~ sinon).
Pour mettre à jour une branche distante : ~git fetch~ :
* Télécharge les /commits/ que le dépôt distant possède mais qui ne sont pas dans le notre, puis,
* Met à jour nos branches distantes (par exemple, origin/main),
* Ne met par à jour nos branches locales (par exemple, main),
Pour rapatrier (/fetch/) les branches distantes et les fusionner (/merge/) : ~git pull~.
Pour rapatrier (/fetch/) les branches distantes et /rebase/ : ~git pull --rebase~
Pour créer une branche afin que celle-ci suive une distante :
* Création d'une nouvelle branche : ~git checkout -b <branche_locale> <branche_distante> ;git
pull~,
* La branche existe déjà : ~git branch -u <branche_distante> <branche_locale>~
* Outils tiers
** Visualisation
*** [[https://github.com/dandavison/delta][Delta]]
Affichage de ~git diff~.
*** [[https://github.com/darrenburns/dunk][Dunk]]
Affichage de ~git diff~.
* Apprentissage
** [[https://github.com/benthayer/git-gud][Git-gud]]
Jeu en ligne de commande permettant d'apprendre l'usage de Git.
** [[https://learngitbranching.js.org/][learngitbranching.js.org]]
Site permettant l'apprentissage de l'usage de Git.
* Références
*