tuto:linux:git
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tuto:linux:git [2017/09/17 17:44] – [log] root | tuto:linux:git [2024/07/19 08:26] (Version actuelle) – admin | ||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| * https:// | * https:// | ||
| * https:// | * https:// | ||
| - | * https://www.atlassian.com/git/ | + | * https://education.github.com/git-cheat-sheet-education.pdf |
| * http:// | * http:// | ||
| * https:// | * https:// | ||
| Ligne 31: | Ligne 31: | ||
| ==== Astuces ==== | ==== Astuces ==== | ||
| + | * Affiche la liste, taille et attributs des fichiers : | ||
| + | < | ||
| + | $ git ls-tree --full-tree -rl HEAD | ||
| + | </ | ||
| + | |||
| * Affiche la racine du projet géré par git : | * Affiche la racine du projet géré par git : | ||
| < | < | ||
| Ligne 65: | Ligne 70: | ||
| * Remplace tous les nom et email d'un auteur par un autre pour l' | * Remplace tous les nom et email d'un auteur par un autre pour l' | ||
| < | < | ||
| - | $ git filter-branch --commit-filter ' | + | $ git filter-branch --commit-filter ' |
| - | if [ "$GIT_AUTHOR_EMAIL" = "schacon@localhost" ]; | + | if [ "$GIT_AUTHOR_NAME" = "root" ]; |
| then | then | ||
| - | | + | |
| - | | + | |
| + | | ||
| + | | ||
| git commit-tree " | git commit-tree " | ||
| else | else | ||
| git commit-tree " | git commit-tree " | ||
| + | | ||
| | | ||
| </ | </ | ||
| Ligne 84: | Ligne 92: | ||
| $ git reflog expire --expire=now --all | $ git reflog expire --expire=now --all | ||
| $ git gc --prune=now | $ git gc --prune=now | ||
| + | </ | ||
| + | |||
| + | ==== Configuration ==== | ||
| + | * Désactiver le pager : | ||
| + | < | ||
| + | $ git config --global --replace-all core.pager "less -F -X" | ||
| </ | </ | ||
| Ligne 387: | Ligne 401: | ||
| </ | </ | ||
| - | * Rechercher un fichier et se revisions | + | * Rechercher un fichier et ses révisions |
| < | < | ||
| $ git log --all --full-history -- test | $ git log --all --full-history -- test | ||
| Ligne 471: | Ligne 485: | ||
| </ | </ | ||
| - | * Détruit la branche gigix : | + | * Détruit la branche gigix localement |
| < | < | ||
| $ git branch -d gigix | $ git branch -d gigix | ||
| + | </ | ||
| + | |||
| + | * Détruit la branche distante gigix sur le remote origin : | ||
| + | < | ||
| + | $ git push -u origin -d gigix | ||
| </ | </ | ||
| Ligne 599: | Ligne 618: | ||
| Les [[#commit]] sont indiqués du plus vieux au plus récent (l’ordre est inversé). | Les [[#commit]] sont indiqués du plus vieux au plus récent (l’ordre est inversé). | ||
| </ | </ | ||
| + | |||
| + | * Rejoue les modifications de dev sur le sommet de la branche master : | ||
| + | < | ||
| + | $ git rebase master dev | ||
| + | #ou | ||
| + | $ git rebase -i master dev | ||
| + | #On peut ensuite avancer master au niveau de dev et supprimer dev | ||
| + | $ git checkout master | ||
| + | $ git merge dev --ff-only | ||
| + | $ git branch -d dev | ||
| + | </ | ||
| + | |||
| + | * Récupérer une sous branche d'une branche dans master : | ||
| + | Prenons le cas ci-dessous : | ||
| + | {{ : | ||
| + | |||
| + | Pour fusionner la sous-branche client de server dans master, on fera : | ||
| + | < | ||
| + | $ git rebase --onto master server client | ||
| + | </ | ||
| + | |||
| + | Ce qui donnera : | ||
| + | {{ : | ||
| + | |||
| ==== merge ==== | ==== merge ==== | ||
| Fusionne 2 [[# | Fusionne 2 [[# | ||
| Ligne 615: | Ligne 658: | ||
| < | < | ||
| $ git merge test --no-ff | $ git merge test --no-ff | ||
| + | </ | ||
| + | |||
| + | * Merge une branche dans une autre sans modifier l' | ||
| + | < | ||
| + | $ git checkout master | ||
| + | $ git merge --squash gigix | ||
| + | $ git diff --staged | ||
| + | $ git commit -a -m "New feature gigix" | ||
| + | #Si on souhaite supprimer gigix | ||
| + | $ git push origin -d gigix | ||
| </ | </ | ||
| Ligne 672: | Ligne 725: | ||
| Trouver par recherche dichotomique la modification qui a introduit un bug : | Trouver par recherche dichotomique la modification qui a introduit un bug : | ||
| * [[https:// | * [[https:// | ||
| + | |||
| + | ==== submodule ==== | ||
| + | * Config : | ||
| + | < | ||
| + | git config --local status.submoduleSummary true | ||
| + | git config --local diff.submodule log | ||
| + | </ | ||
| + | |||
| + | * Ajout de submodules: | ||
| + | < | ||
| + | git submodule add -b docker-edge-to-nightly --force https:// | ||
| + | git submodule add -b main https:// | ||
| + | git submodule add https:// | ||
| + | </ | ||
| + | |||
| + | * Etat des submodules entre ceux déclarés et ceux connus : | ||
| + | < | ||
| + | cat .gitmodules | ||
| + | cat .git/config | ||
| + | </ | ||
| + | |||
| + | * Cloner un projet en copiant également les submodules : | ||
| + | < | ||
| + | git clone --recursive https://xxx xxx | ||
| + | </ | ||
| + | |||
| + | * Initialiser un projet : | ||
| + | < | ||
| + | git submodule update --init --recursive | ||
| + | </ | ||
| + | |||
| + | * Mettre à jour les sous-projets à la dernière version de la branche : | ||
| + | < | ||
| + | git submodule update --init --recursive --remote --rebase | ||
| + | </ | ||
| + | |||
| + | * Status: | ||
| + | < | ||
| + | git submodule status --recursive | ||
| + | </ | ||
| + | |||
| + | * Vérifier le SHA avant de mettre à jour les submodules: | ||
| + | < | ||
| + | git ls-tree -r HEAD dev/docker | ||
| + | 160000 commit c700df55425430d352d16b2a59bea2ab67a6a8bb dev/docker | ||
| + | </ | ||
| + | |||
| + | * Nettoyer les sous-projets : | ||
| + | < | ||
| + | git submodule status --recursive | ||
| + | git fetch --recurse-submodules --prune | ||
| + | git submodule foreach --recursive 'git reset --hard' | ||
| + | git submodule foreach --recursive 'git clean -fdx' | ||
| + | </ | ||
| + | |||
| + | * Changement de branche de tracking : | ||
| + | < | ||
| + | git submodule set-branch --branch master dev/docker | ||
| + | git submodule set-branch --default dev/docker | ||
| + | </ | ||
| + | |||
| + | * Suppression d'un submodule: | ||
| + | < | ||
| + | git submodule deinit -f -- nginx | ||
| + | git rm -f nginx | ||
| + | rm -rf .git/ | ||
| + | </ | ||
| + | |||
| + | ==== worktree ==== | ||
| + | * Créer un worktree sur une nouvelle branche nommée **myfeature** depuis la branche main dans **../ | ||
| + | < | ||
| + | git worktree add -b myfeature ../ | ||
| + | </ | ||
| + | |||
| + | * Lister les worktree: | ||
| + | < | ||
| + | $ git worktree list | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | * Supprimer un worktree: | ||
| + | < | ||
| + | git worktree remove / | ||
| + | </ | ||
tuto/linux/git.1505670268.txt.gz · Dernière modification : de root
