[proofplan]
Path connectedness of $X$ lets us choose a path $\gamma$ from $x_0$ to $x_1$. Each $\tilde{x}_0 \in p^{-1}(x_0)$ has a unique lift $\tilde{\gamma}_{\tilde{x}_0}: I \to \tilde{X}$ starting at $\tilde{x}_0$, by the path-lifting special case of the [Homotopy Lifting Lemma](/theorems/1887). Assigning $\tilde{x}_0 \mapsto \tilde{\gamma}_{\tilde{x}_0}(1)$ defines a map $f_\gamma: p^{-1}(x_0) \to p^{-1}(x_1)$. The same construction applied to the reverse path $\bar{\gamma}$ gives $f_{\bar{\gamma}}: p^{-1}(x_1) \to p^{-1}(x_0)$. A uniqueness-of-lifts argument, based on the fact that the concatenation of a lift and its reverse is the unique lift of a constant path and therefore constant, shows the two maps are mutually inverse. Hence $f_\gamma$ is a bijection.
[/proofplan]
[step:Choose a path in $X$ between the base points]
Since $X$ is path connected, there exists a continuous path
\begin{align*}
\gamma: I &\to X, \quad \gamma(0) = x_0, \quad \gamma(1) = x_1.
\end{align*}
Fix such a $\gamma$ for the remainder of the proof. Let $\bar{\gamma}: I \to X$ denote the reversed path,
\begin{align*}
\bar{\gamma}: I \to X, \quad s \mapsto \gamma(1 - s),
\end{align*}
which runs from $x_1$ to $x_0$.
[/step]
[step:Define the fibre map $f_\gamma$ using unique path lifts]
For each $\tilde{x}_0 \in p^{-1}(x_0)$, the [Homotopy Lifting Lemma](/theorems/1887) — applied with $Y$ a one-point space, so that $\gamma: I \to X$ is viewed as a homotopy from the point $x_0$ to the point $x_1$, with initial lift $\tilde{f}_0: \{\text{pt}\} \to \tilde{X}$ sending the point to $\tilde{x}_0$ — produces a unique continuous lift
\begin{align*}
\tilde{\gamma}_{\tilde{x}_0}: I &\to \tilde{X}
\end{align*}
with $p \circ \tilde{\gamma}_{\tilde{x}_0} = \gamma$ and $\tilde{\gamma}_{\tilde{x}_0}(0) = \tilde{x}_0$. Since $p(\tilde{\gamma}_{\tilde{x}_0}(1)) = \gamma(1) = x_1$, the endpoint lies in $p^{-1}(x_1)$. Define
\begin{align*}
f_\gamma: p^{-1}(x_0) &\to p^{-1}(x_1), \\
\tilde{x}_0 &\mapsto \tilde{\gamma}_{\tilde{x}_0}(1).
\end{align*}
By the uniqueness clause of the Homotopy Lifting Lemma, $\tilde{\gamma}_{\tilde{x}_0}$ is determined by $\tilde{x}_0$, so $f_\gamma$ is a well-defined function.
Symmetrically, for each $\tilde{x}_1 \in p^{-1}(x_1)$, let $\tilde{\bar{\gamma}}_{\tilde{x}_1}: I \to \tilde{X}$ be the unique continuous lift of $\bar{\gamma}$ with starting point $\tilde{x}_1$, and define
\begin{align*}
f_{\bar{\gamma}}: p^{-1}(x_1) &\to p^{-1}(x_0), \\
\tilde{x}_1 &\mapsto \tilde{\bar{\gamma}}_{\tilde{x}_1}(1).
\end{align*}
[/step]
[step:Prove $f_{\bar{\gamma}} \circ f_\gamma = \operatorname{id}_{p^{-1}(x_0)}$ via a reversal-lift identity]
Fix $\tilde{x}_0 \in p^{-1}(x_0)$. Let $\tilde{\gamma} := \tilde{\gamma}_{\tilde{x}_0}: I \to \tilde{X}$ be the unique lift of $\gamma$ starting at $\tilde{x}_0$. Set $\tilde{x}_1 := \tilde{\gamma}(1) = f_\gamma(\tilde{x}_0) \in p^{-1}(x_1)$.
Define
\begin{align*}
\eta: I \to \tilde{X}, \quad s \mapsto \tilde{\gamma}(1 - s).
\end{align*}
Then $\eta$ is continuous, $\eta(0) = \tilde{\gamma}(1) = \tilde{x}_1$, and for every $s \in I$,
\begin{align*}
p(\eta(s)) = p(\tilde{\gamma}(1 - s)) = \gamma(1 - s) = \bar{\gamma}(s),
\end{align*}
so $\eta$ is a continuous lift of $\bar{\gamma}$ starting at $\tilde{x}_1$. By uniqueness of path lifts with prescribed initial point,
\begin{align*}
\tilde{\bar{\gamma}}_{\tilde{x}_1} = \eta.
\end{align*}
Therefore
\begin{align*}
f_{\bar{\gamma}}(f_\gamma(\tilde{x}_0)) = f_{\bar{\gamma}}(\tilde{x}_1) = \tilde{\bar{\gamma}}_{\tilde{x}_1}(1) = \eta(1) = \tilde{\gamma}(0) = \tilde{x}_0.
\end{align*}
Since $\tilde{x}_0 \in p^{-1}(x_0)$ was arbitrary, $f_{\bar{\gamma}} \circ f_\gamma = \operatorname{id}_{p^{-1}(x_0)}$.
[guided]
The inverse of "follow the lift of $\gamma$ starting at $\tilde{x}_0$ to the endpoint" should be "follow the lift of the reversed path $\bar{\gamma}$ starting at that endpoint back to where you came from". The concern is a priori whether the reversed lift reaches $\tilde{x}_0$ specifically, as opposed to some other point in $p^{-1}(x_0)$. The answer is forced by uniqueness of lifts.
Here is the point in detail. We have the lift $\tilde{\gamma}$ of $\gamma$, starting at $\tilde{x}_0$ and ending at some $\tilde{x}_1$. Reversing $\tilde{\gamma}$ in $\tilde{X}$ gives $\eta(s) = \tilde{\gamma}(1 - s)$, a continuous path in $\tilde{X}$. This $\eta$ starts at $\tilde{x}_1$, and projects under $p$ to $s \mapsto \gamma(1 - s) = \bar{\gamma}(s)$. So $\eta$ is **a** lift of $\bar{\gamma}$ starting at $\tilde{x}_1$. But the Homotopy Lifting Lemma says there is exactly one such lift: $\tilde{\bar{\gamma}}_{\tilde{x}_1}$. Hence $\eta = \tilde{\bar{\gamma}}_{\tilde{x}_1}$, and the endpoint of $\eta$ is the endpoint of $\tilde{\bar{\gamma}}_{\tilde{x}_1}$, which by definition is $f_{\bar{\gamma}}(\tilde{x}_1) = f_{\bar{\gamma}}(f_\gamma(\tilde{x}_0))$. The endpoint of $\eta$ is $\eta(1) = \tilde{\gamma}(0) = \tilde{x}_0$. Done.
The moral: the composition $f_{\bar{\gamma}} \circ f_\gamma$ is "lift $\gamma$ forward, then lift $\bar{\gamma}$ backward starting from the endpoint of the forward lift". Uniqueness of lifts forces the backward lift to retrace the forward lift, returning to the original starting point.
[/guided]
[/step]
[step:Prove $f_\gamma \circ f_{\bar{\gamma}} = \operatorname{id}_{p^{-1}(x_1)}$ by symmetry]
The roles of $\gamma$ and $\bar{\gamma}$ are symmetric: $\bar{\gamma}$ is a path from $x_1$ to $x_0$, its reverse $\bar{\bar{\gamma}} = \gamma$, and the construction of Step 2 applies with the roles of $(x_0, x_1)$ and $(\gamma, \bar{\gamma})$ interchanged. The same reversal argument, now applied to a lift $\tilde{\eta}$ of $\bar{\gamma}$ starting at $\tilde{x}_1 \in p^{-1}(x_1)$ and yielding the reversed path $s \mapsto \tilde{\eta}(1 - s)$, which is the unique lift of $\gamma$ starting at $\tilde{\eta}(1)$, shows
\begin{align*}
f_\gamma \circ f_{\bar{\gamma}} = \operatorname{id}_{p^{-1}(x_1)}.
\end{align*}
Explicitly: fix $\tilde{x}_1 \in p^{-1}(x_1)$, let $\tilde{\eta} := \tilde{\bar{\gamma}}_{\tilde{x}_1}$ be the unique lift of $\bar{\gamma}$ starting at $\tilde{x}_1$, and set $\tilde{x}_0 := \tilde{\eta}(1) = f_{\bar{\gamma}}(\tilde{x}_1)$. The path $s \mapsto \tilde{\eta}(1 - s)$ is a continuous lift of $s \mapsto \bar{\gamma}(1 - s) = \gamma(s)$ starting at $\tilde{\eta}(1) = \tilde{x}_0$, so it equals $\tilde{\gamma}_{\tilde{x}_0}$ by uniqueness. Evaluating at $s = 1$:
\begin{align*}
f_\gamma(f_{\bar{\gamma}}(\tilde{x}_1)) = f_\gamma(\tilde{x}_0) = \tilde{\gamma}_{\tilde{x}_0}(1) = \tilde{\eta}(0) = \tilde{x}_1.
\end{align*}
[/step]
[step:Conclude that $f_\gamma$ is a bijection]
Steps 3 and 4 show that $f_{\bar{\gamma}}: p^{-1}(x_1) \to p^{-1}(x_0)$ is a two-sided inverse to $f_\gamma: p^{-1}(x_0) \to p^{-1}(x_1)$. Hence $f_\gamma$ is a bijection between the fibres over $x_0$ and $x_1$. Since $x_0, x_1 \in X$ were arbitrary, every pair of fibres of $p$ is in bijection, completing the proof.
[/step]