Outils pour utilisateurs

Outils du site


tuto:linux:git

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tuto:linux:git [2018/03/22 21:04] – [Astuces] roottuto:linux:git [2024/07/19 08:26] (Version actuelle) admin
Ligne 70: Ligne 70:
   * Remplace tous les nom et email d'un auteur par un autre pour l'ensemble des [[#commit]] :   * Remplace tous les nom et email d'un auteur par un autre pour l'ensemble des [[#commit]] :
 <xtermrtf> <xtermrtf>
-$ git filter-branch --commit-filter ' +$ git filter-branch --commit-filter '                                                                                       
-         if [ "$GIT_AUTHOR_EMAIL" = "schacon@localhost" ];+         if [ "$GIT_AUTHOR_NAME" = "root" ];
          then          then
-                 GIT_AUTHOR_NAME="Scott Chacon"; +                 GIT_AUTHOR_NAME="Ghislain LE MEUR"; 
-                 GIT_AUTHOR_EMAIL="schacon@example.com";+                 GIT_COMMITTER_NAME="Ghislain LE MEUR"; 
 +                 GIT_AUTHOR_EMAIL="gigi206@users.noreply.github.com"; 
 +                 GIT_COMMITTER_EMAIL="gigi206@users.noreply.github.com"; 
                  git commit-tree "$@";                  git commit-tree "$@";
          else          else
                  git commit-tree "$@";                  git commit-tree "$@";
 +         fi' -f HEADt commit-tree "$@";
          fi' HEAD          fi' HEAD
 </xtermrtf> </xtermrtf>
Ligne 482: Ligne 485:
 </xtermrtf> </xtermrtf>
  
-  * Détruit la branche gigix :+  * Détruit la branche gigix localement :
 <xtermrtf> <xtermrtf>
 $ git branch -d gigix $ git branch -d gigix
 +</xtermrtf>
 +
 +  * Détruit la branche distante gigix sur le remote origin :
 +<xtermrtf>
 +$ git push -u origin -d gigix
 </xtermrtf> </xtermrtf>
  
Ligne 610: 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é).
 </note> </note>
 +
 +  * Rejoue les modifications de dev sur le sommet de la branche master :
 +<xtermrtf>
 +$ 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
 +</xtermrtf>
 +
 +  * Récupérer une sous branche d'une branche dans master :
 +Prenons le cas ci-dessous :
 +{{ :tuto:linux:interesting-rebase-1.png?nolink |}}
 +
 +Pour fusionner la sous-branche client de server dans master, on fera :
 +<xtermrtf>
 +$ git rebase --onto master server client
 +</xtermrtf>
 +
 +Ce qui donnera :
 +{{ :tuto:linux:interesting-rebase-2.png?nolink |}}
 +
 ==== merge ==== ==== merge ====
 Fusionne 2 [[#branch|branche]] et garde une trace dans [[#log|l'historique]]. Fusionne 2 [[#branch|branche]] et garde une trace dans [[#log|l'historique]].
Ligne 626: Ligne 658:
 <xtermrtf> <xtermrtf>
 $ git merge test --no-ff $ git merge test --no-ff
 +</xtermrtf>
 +
 +  * Merge une branche dans une autre sans modifier l'historique (exemple : merge la branche gigix dans la branche master) :
 +<xtermrtf>
 +$ 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
 </xtermrtf> </xtermrtf>
  
Ligne 683: 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://www.youtube.com/watch?v=842RnLfqb3g|Tuto git bisect]]   * [[https://www.youtube.com/watch?v=842RnLfqb3g|Tuto git bisect]]
 +
 +==== submodule ====
 +  * Config :
 +<xtermrtf>
 +git config --local status.submoduleSummary true
 +git config --local diff.submodule log
 +</xtermrtf>
 +
 +  * Ajout de submodules:
 +<xtermrtf>
 +git submodule add -b docker-edge-to-nightly --force https://github.com/geerlingguy/ansible-role-docker dev/docker
 +git submodule add -b main https://github.com/roles-ansible/ansible_collection_time.git dev/ntp
 +git submodule add https://github.com/bennojoy/nginx dev/nginx
 +</xtermrtf>
 +
 +  * Etat des submodules entre ceux déclarés et ceux connus :
 +<xtermrtf>
 +cat .gitmodules
 +cat .git/config
 +</xtermrtf>
 +
 +  * Cloner un projet en copiant également les submodules :
 +<xtermrtf>
 +git clone --recursive https://xxx xxx
 +</xtermrtf>
 +
 +  * Initialiser un projet :
 +<xtermrtf>
 +git submodule update --init --recursive
 +</xtermrtf>
 +
 +  * Mettre à jour les sous-projets à la dernière version de la branche :
 +<xtermrtf>
 +git submodule update --init --recursive --remote --rebase
 +</xtermrtf>
 +
 +  * Status:
 +<xtermrtf>
 +git submodule status --recursive
 +</xtermrtf>
 +
 +  * Vérifier le SHA avant de mettre à jour les submodules:
 +<xtermrtf>
 +git ls-tree -r HEAD dev/docker
 +160000 commit c700df55425430d352d16b2a59bea2ab67a6a8bb dev/docker
 +</xtermrtf>
 +
 +  * Nettoyer les sous-projets :
 +<xtermrtf>
 +git submodule status --recursive
 +git fetch --recurse-submodules --prune
 +git submodule foreach --recursive 'git reset --hard'
 +git submodule foreach --recursive 'git clean -fdx'
 +</xtermrtf>
 +
 +  * Changement de branche de tracking :
 +<xtermrtf>
 +git submodule set-branch --branch master dev/docker
 +git submodule set-branch --default dev/docker
 +</xtermrtf>
 +
 +  * Suppression d'un submodule:
 +<xtermrtf>
 +git submodule deinit -f -- nginx
 +git rm -f nginx
 +rm -rf .git/modules/nginx
 +</xtermrtf>
 +
 +==== worktree ====
 +  * Créer un worktree sur une nouvelle branche nommée **myfeature** depuis la branche main dans **../wk/myfeature** :
 +<xtermrtf>
 +git worktree add -b myfeature ../wk/myfeature main
 +</xtermrtf>
 +
 +  * Lister les worktree:
 +<xtermrtf>
 +$ git worktree list 
 +/home/gigi/git_test4       d67857c [main]
 +/home/gigi/wk/myfeature    d67857c [myfeature]
 +</xtermrtf>
 +
 +* Supprimer un worktree:
 +<xtermrtf>
 +git worktree remove /home/gigi/wk/myfeature
 +</xtermrtf>
tuto/linux/git.1521752690.txt.gz · Dernière modification : 2018/03/22 21:04 de root