historiques_divergents.tex 2.02 KB
Newer Older
Remy Huet's avatar
Remy Huet committed
1 2
\begin{frame}
	\frametitle{Quand parler de divergence ?}
Remy Huet's avatar
Remy Huet committed
3 4 5 6 7 8 9 10 11 12 13 14
	\begin{block}{Définition}
		On parle de \textbf{divergence} lorsque deux \textbf{historiques} sont \textbf{incompatibles}
		\textit{(c'est à dire qu'on ne peut pas pousser ou tirer car les historiques ne sont pas cohérents)}

		Il faut bien faire la différence entre le \textbf{retard} d'un historique sur un autre, qui peut se régler via un \texttt{push} ou un \texttt{pull} et une divergence.
	\end{block}
	\begin{figure}[h]
		\centering
		\input{src/tikz/divergence.tex}
		\caption{Exemple de divergence}
		\label{fig:divergence}
	\end{figure}
Remy Huet's avatar
Remy Huet committed
15 16 17 18
\end{frame}

\begin{frame}
	\frametitle{Comment diverger ?}
Remy Huet's avatar
Remy Huet committed
19 20 21 22 23 24 25 26 27
	\begin{block}{Explications}
		On vient de voir qu'une divergence était une incohérence entre deux historiques.
		On peut donc en déduire plusieurs cas communs de divergence:
		\begin{itemize}
			\item En faisant un commit sans être à jour avec un repo distant
			\item En ammendant ou supprimant un ou plusieurs commits \textit{via un git commit --amend ou un git reset}
			\item Lors d'un rebase \textit{(c'est pourquoi on vous a dit de ne jamais rebase une branche déjà suivie)}
		\end{itemize}
	\end{block}
Remy Huet's avatar
Remy Huet committed
28 29
\end{frame}

Remy Huet's avatar
Remy Huet committed
30
\begin{frame}[fragile]
Remy Huet's avatar
Remy Huet committed
31
	\frametitle{Résoudre des divergences ?}
Remy Huet's avatar
Remy Huet committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45
	\begin{block}{Définition}
		\textbf{Résoudre une divergence}, c'est faire en sorte que les historiques soient cohérents.

		Pour ça, on peut:
		\begin{itemize}
			\item Remettre toutes les divergences au dessus de l'historique distant via un \texttt{git rebase}.
				Ainsi, si on fait un commit sur master en étant en retard sur le remote, on rebasera master sur origin/master et la divergence sera réglée
			\item Écrasant son historique local via un \verb+git reset --hard+
			\item Écrasant l'historique distant via un \verb+git push --force+
		\end{itemize}
	\end{block}
	\begin{alertblock}{Attention}
		On évitera d'ecraser l'historique distant sans être sûr de soi, car cela créera des divergences avec \textbf{tous les autres collaborateurs} du projet.
	\end{alertblock}
Remy Huet's avatar
Remy Huet committed
46
\end{frame}