Commit 4b79352e authored by Thibaud Duhautbout's avatar Thibaud Duhautbout

Gestion non linéaire - merge et rebase

parent 2bfa3729
Pipeline #32926 passed with stage
in 23 seconds
\begin{frame}
\begin{frame}[fragile]{Fusionner deux branches avec Git}
\textit{Attention : avant de commencer, s'assurer que le répertoire est dans un état propre et qu'il n'y a pas de modifications non validées !}
\medskip
Git propose deux façons de fusionner deux branches :
\begin{itemize}
\item le \verb+merge+ : fusion \enquote{basique} de deux branches \\
\textbf{C'est l'alternative la plus simple}
\item le \verb+rebase+ : modification plus avancée de l'historique \\
\textbf{Plus puissant mais plus dangereux}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Le merge}
Le \verb+merge+ applique les modifications apportées depuis la divergence par la branche secondaire sur la branche de départ.
TODO figure
Ici, C7 réalise le \verb+merge+ de la branche bleue dans la branche verte : les modifications apportées par C4 et C6 sont appliquées après C5.
\medskip
\Pause
\begin{block}{Processus de fusion}
\begin{enumerate}
\item se déplacer sur la branche destination de la fusion \\
\verb+git checkout <destination>+
\item lancer la fusion de la branche de travail \\
\verb+git merge <branche de travail>+
\end{enumerate}
\end{block}
\end{frame}
\begin{frame}
\begin{frame}[fragile]
\frametitle{Le rebase}
\framesubtitle{Avertissement}
\begin{center}
\includegraphics[height=3em]{./imgs/warning.jpg}
\textbf{ATTENTION -- COMMANDE RISQUÉE}
\end{center}
Le \verb+rebase+ cause une \textbf{modification de l'historique} qui peut rendre l'état de votre arbre incohérent avec une éventuelle branche distante (GitLab...).
\bigskip
\begin{block}{Conclusion}
On rebase une branche locale mais \textbf{JAMAIS} une branche synchronisée \\
\tiny{(sauf si vous êtes absolument sûrs de ce que vous faites)}.
\end{block}
\end{frame}
\begin{frame}
\begin{frame}[fragile]
\frametitle{Le rebase}
\framesubtitle{Comparaison avec le merge}
Le \verb+rebase+ intègre aussi les modifications d'une branche secondaire sur la branche cible depuis la divergence mais ne crée pas de commit de merge.
\medskip
Les commits effectués depuis la divergence sont \textbf{déplacés et réappliqués} après le dernier commit de la branche cible.
\Pause
\medskip
Concrètement :
\bigskip
TODO figures
\begin{center}
%\includegraphics[height=3em]{imgs/conflit.png}
Merge de la branche bleue dans la branche verte
\end{center}
\medskip
\begin{center}
%\includegraphics[height=4em]{imgs/rebase_exemple.png}
Rebase de la branche bleue sur la branche verte
\end{center}
\end{frame}
\begin{frame}
\begin{frame}[fragile]
\frametitle{Le rebase}
\framesubtitle{Application simple}
Après le rebase, pour ramener la branche de référence au bout de la chaîne de commits, on fait une fusion classique (merge).
\begin{block}{Processus de rebase avec fusion}
\begin{itemize}
\item se déplacer sur la branche à rebase \\
\verb+git checkout <branche à rebase>+
\item rebase la branche courante sur la branche de référence \\
\verb+git rebase <branche de référence>+
\item régler les éventuels conflits...
\item se déplacer sur la branche de référence \\
\verb+git checkout <branche de référence>+
\item fusionner la branche à rebase dans la branche de référence \\
\verb+git merge <branche à rebase>+
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment