the proof of lifting criterion

In Hatcher's book,the lifting criterion is stated as following:

Suppose given a covering space $$p: (\tilde{X},\tilde{x}_0) \rightarrow (X,x_0)$$ and a map $$f: (Y,y_0) \rightarrow (X,x_0)$$ with $$Y$$ path-connected and locally path-connected. Then a lift $$\tilde{f}: (Y,y_0) \rightarrow (\tilde{X},\tilde{x}_0)$$ of $$f$$ exists iff $$f_*(\pi_1 (Y,y_0)) \subset p_*(\pi_1(\tilde{X},\tilde{x}_0))$$.

The proof of "only if" part is obvious. I met with some problems when reading the proof the "if" part.

For any $$y\in Y$$,let $$\gamma$$ be a path in $$Y$$ from $$y_0$$ to $$y$$, then we can define $$\tilde{f}(y)=\widetilde{f\gamma}(1)$$.We need to show that the definition is well defined.Let $$\gamma^{'}$$ be another path in $$Y$$ from $$y_0$$ to $$y$$.Then $$(f\gamma')\cdot(\overline{f\gamma})$$ is a loop $$h_0$$ at $$x_0$$ with $$[h_0]\in f_*(\pi_1 (Y,y_0)) \subset p_*(\pi_1(\tilde{X},\tilde{x_0}))$$.*This means that there is a homotopy $$h_t$$ of $$h_0$$ to a loop $$h_1$$ that lifts to a loop $$\tilde{h}_1$$ in $$\tilde{X}$$ based at $$x_0$$.*How to deduce the above conclusion?

Applying the covering homotopy property to $$h_t$$ to get a lifting $$\tilde{h}_t$$.Since $$\tilde{h}_1$$ is a loop at $$\tilde{x}_0$$,so is $$\tilde{h}_0$$ .(Why?)

Since $$[h_0 ]\in p_{\ast }\pi_1 (\tilde{X} ,\tilde{x}_0 )$$, it follows that there is a loop $$\gamma_1\colon\mathbb{S}^1\to\tilde{X}$$ such that $$\gamma_1 (1)=\tilde{x}_0$$ and $$p_{\ast} [\gamma_1 ]=[h_0 ]$$. Consider the loop $$h_1 =p\gamma_1$$, it represents the same homotopy class as $$h_0$$, hence there is a homotopy $$h_t$$ between them.
For the second one, note that we have $$h_t (1)$$ and $$h_t (0)$$ constant loops, hence $$\tilde{h}_t (1)$$ and $$\tilde{h}_t (0)$$ satisfies $$p\tilde{h}_t (i)\equiv h_t (i)$$, $$i=0,1$$. Therefore $$\tilde{h}_t (i)\in p^{-1} (h_t (i))$$, which is discrete and therefore constant.
• You should write $\gamma_1 : I \to \tilde X$ because in Hatcher's book loops are defined as closed paths. And I think you shouldn't say $h_t(1)$ and $h_t(0)$ are constant loops (although you may regard $t \mapsto h_t(i)$ as a loop) because it is confusing. In fact we have $h_t(i) = x_0$ for all $t$. – Paul Frost Oct 7 '19 at 11:46