User Tools

Site Tools


projtec:git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projtec:git [2018/10/08 15:55] – [Restaurer un fichier supprimé ou une ancienne version] orelprojtec:git [2024/03/18 15:06] (current) – external edit 127.0.0.1
Line 25: Line 25:
 # mail / user name # mail / user name
 git config --global user.name "orel" git config --global user.name "orel"
-git config --global user.mail aurelien.esnard@u-bordeaux.fr+git config --global user.email aurelien.esnard@u-bordeaux.fr
 # editeur de texte # editeur de texte
 git config --global core.editor emacs git config --global core.editor emacs
Line 189: Line 189:
 ==== Les branches locales et distantes ==== ==== Les branches locales et distantes ====
  
-Par défaut, nous travaillons sur la branche //master// du dépôt local.+Par défaut, nous travaillons sur la branche //master// du dépôt local que nous synchronisons avec la branche distante //origin/master// du dépôt distant avec les commandes //git pull// et //git push//. 
 +Il est possible de créer et d'utiliser d'autres branches. C'est particulièrement utile pour développer une nouvelle fonctionnalité, expérimenter des choses ou réparer un bug, sans perturber le reste du projet.
  
 Nous allons maintenant créer une nouvelle branche //hotfix//, afin de corriger un bug. Nous allons maintenant créer une nouvelle branche //hotfix//, afin de corriger un bug.
Line 200: Line 201:
 </code> </code>
  
-Nous sommes encore dans la branche //master// comme l'indique "*". Passons dans la branche //hotfix// et corrigeons le bug... +Nous sommes encore dans la branche //master// comme l'indique "*". Passons dans la branche //hotfix// :
 <code bash> <code bash>
-git checkout hotfix+git switch hotfix
 git branch  git branch 
 * hotfix * hotfix
   master   master
 +</code>
 +
 +Regardons l'état du dépôt : 
 +<code bash>
 +git log --graph --oneline
 +* c908469 (HEAD -> hotfix, origin/master, origin/HEAD, master) bla bla
 +* d144ffa autre bla bla
 +(...)
 +</code>
 +
 +Le dernier commit est bien commun à la branch hotfix, la branch master. Corrigeons le "bug" maintenant :
 +
 +<code bash>
 date >> date.txt date >> date.txt
 git add date.txt git add date.txt
Line 212: Line 225:
 </code> </code>
  
-Une fois le bug corrigé, nous pouvons le commiter dans la branche courante //hotfix//. Notons que cela n'a aucun impact sur la branche //master//. Pour propager cette modification vers la branche //master//, il va falloir repasser dans la branche //master// et effectuer un //merge//.+Une fois le bug corrigé, nous pouvons le commiter dans la branche courante //hotfix//. Notons que cela n'a aucun impact sur la branche //master//:
  
 <code bash> <code bash>
-git checkout master+git log --graph --oneline 
 +* c38c81a (HEAD -> hotfix) deux dates dans hotfix 
 +* c908469 (origin/master, origin/HEAD, master) bla bla 
 +* d144ffa autre bla bla 
 +(...) 
 +</code> 
 + 
 +Pour propager cette modification vers la branche //master//, il va falloir repasser dans la branche //master//, faire quelques modifs sur master puis effectuer un //merge//
 + 
 +<code bash> 
 +git switch master 
 +date >> date2.txt 
 +git add date2.txt 
 +git commit -m "date2.txt"
 git merge hotfix git merge hotfix
 </code> </code>
  
-On peut finalement supprimer la branche quand cette dernière n'est plus utile.+<code bash> 
 +git log --graph --oneline 
 +*   36db317 (HEAD -> master) Merge branch 'hotfix' 
 +|\   
 +| * c38c81a (hotfix) deux dates dans hotfix 
 +|/   
 +* c908469 bla bla 
 +* d144ffa autre bla bla 
 +</code>
  
-  git branch -hotfix+Pour propager ces modifications dans le dépôt distant on fera des pull/push comme d'habitude.
  
-Si l'on souhaite que sa branche locale //mybranch// deviennent une branche distante (ou "remote") : 
  
-  git checkout mybranch +Si l'on souhaite que sa branche locale //hotfix// deviennent une branche distante (ou "remote") :
-  git push --set-upstream origin mybranch     +
-  +
  
-Pour voir toutes les branches (locales et distantes:+<code bash> 
 +  git log --graph --oneline 
 +    * c38c81a (HEAD -> hotfixdeux dates dans hotfix 
 +    * c908469 bla bla 
 +    * d144ffa autre bla bla 
 +    (...) 
 +  git switch hotfix 
 +  git push --set-upstream origin hotfix 
 +  git log --graph --oneline 
 +    * c38c81a (HEAD -> hotfix, origin/hotfix) deux dates dans hotfix 
 +    * c908469 bla bla 
 +    * d144ffa autre bla bla 
 +    (...) 
 +</code>
  
 +La encore on se synchronisera avec la branche distance à l'aide des commandes push/pull:
 +
 +<code bash>
 +  date >> date.txt
 +  git add date.txt
 +  git commit -m "mise à jour de la date"
 +  git log --graph --oneline
 +    * 68b1978 (HEAD -> hotfix) mise à jour de la date
 +    * c38c81a (origin/hotfix) deux dates dans hotfix
 +    (...)
 +  git push
 +  git log --graph --oneline
 +    * 68b1978 (HEAD -> hotfix, origin/hotfix) mise à jour de la date
 +    * c38c81a deux dates dans hotfix
 +    (...) 
 +</code>
 +
 +
 +Pour voir toutes les branches (locales et distantes) :
 +<code bash>
   git fetch -p   git fetch -p
   git branch -a   git branch -a
 +</code>
      
 __Nota Bene__ : le //fetch// permet de mettre à jour son cache local et éventuellement (option -p) d'effacer dans ce cache les références à des branches mortes ! __Nota Bene__ : le //fetch// permet de mettre à jour son cache local et éventuellement (option -p) d'effacer dans ce cache les références à des branches mortes !
      
-Pour récupérer une branche distante et la suivre via une branche locale : 
  
-  git checkout --track origin/mybranch+Puis pour supprimer la branche locale, il faut faire ceci :   
 +<code bash> 
 +  git branch -d mybranch 
 +</code>
  
-Puis pour supprimer la branche distante (enfin presque...), il faut faire ceci :   
  
 +Puis pour supprimer la branche distante (enfin presque...), il faut faire ceci :  
 +<code bash>
   git push origin --delete mybranch   git push origin --delete mybranch
-   +</code>  
-Expliquer le //rebase// simple :+
  
-  git checkout mybranch +Pour récupérer une branche distante et la suivre via une branche locale : 
-  git rebase master +<code bash> 
-  git checkout master +  git checkout --track origin/mybranch 
-  git merge mybranch+</code> 
 + 
 +Considérons le cas suivant... Expliquer ensuite le //rebase// simple : 
 + 
 +<code bash> 
 +  git switch mybranch 
 +  git rebase master        #  
 +  git switch master 
 +  git merge mybranch       # merge naif
   git branch -d mybranch   git branch -d mybranch
 +</code>
  
 Pour aller plus loin : Pour aller plus loin :
Line 375: Line 451:
  
 L'idée c'est que le .git/ n'est pas dupliqué ! L'idée c'est que le .git/ n'est pas dupliqué !
 +
 +=== Suppression d'une Branche Distante ====
 +
 +Pour supprimer une branche locale sur votre ordinateur, la commande est la suivante :
 +
 +  $ git branch -d [nom_de_la_branche]
 + 
 +Ou bien : 
 +
 +  $ git branch -D [nom_de_la_branche]
 +
 +Pour supprimer la branche située sur le dépôt distant (syntaxe récente) :
 +
 +  $ git push origin --delete [nom_de_la_branche]
 +
 +Pour mettre à jour les changements sur un autre ordinateur, il faut faire :
 +
 +  $ git fetch --all -prune
 +
 +=> https://www.journaldunet.fr/web-tech/developpement/1202943-effacer-une-branche-git-a-la-fois-locale-et-distante/
 +==== Suppression de Commit Fautifs sur le dépôt distant ====
 +
 +Revenir à l'état désiré : 
 +
 +  $ git reset --hard <commit hash>
 +
 +Forcer cet état comme le dernier état du dépôt :
 +
 +  $ git push --force origin master
 +  
 +Attention : Ces commandes sont susceptibles d'engendrer le chaos lorsque plusieurs utilisateurs collaborent sur le même dépôt. https://makandracards.com/git/7347-supprimer-des-commits-fautifs-avec-git
 ==== Savane ==== ==== Savane ====
  
Line 393: Line 500:
 ==== A Lire ==== ==== A Lire ====
  
 +  * https://gitlab-ce.iut.u-bordeaux.fr/Pierre/DEMO-GIT-PT2
 +  * https://marklodato.github.io/visual-git-guide/index-en.html
 +  * https://help.github.com/articles/syncing-a-fork/
   * http://nvie.com/posts/a-successful-git-branching-model/   * http://nvie.com/posts/a-successful-git-branching-model/
   * https://marklodato.github.io/visual-git-guide/index-en.html   * https://marklodato.github.io/visual-git-guide/index-en.html
Line 398: Line 508:
   * https://yakiloo.com/getting-started-git-flow/   * https://yakiloo.com/getting-started-git-flow/
   * https://git-man-page-generator.lokaltog.net/   * https://git-man-page-generator.lokaltog.net/
 +  * https://thor.enseirb-matmeca.fr/ruby/docs/repository/git
projtec/git.1539014157.txt.gz · Last modified: 2024/03/18 15:05 (external edit)