Preliminaries: There are lots of variations on the settings in which we define sheaves. I am concerned with the details linking the general definition below to the Grothendieck topology it generates; particularly, the assertion that sheaves with respect to a coverage are the same as sheaves with respect to the generated Grothendieck coverage.

Let $\mathcal{C}$ be a (small) category. Do not assume $\mathcal{C}$ has pullbacks. Denote the Yoneda embedding of an object by $Yc$.

Descent can be phrased concisely in terms of subfunctors of Yoneda embeddings. We say, a presheaf $X$ satisfies *descent* with respect to a subfunctor $\iota \colon F \hookrightarrow Yc$ if and only if the precomposition $-\iota \colon \lbrack \mathcal{C}^{\operatorname{op}}, Set \rbrack (Yc,X) \rightarrow \lbrack \mathcal{C}^{\operatorname{op}}, Set \rbrack (F,X)$ is an isomorphism.

Any set of maps $f:=\{ f_i \colon c_i \rightarrow c \}_I$ generates a subfunctor $\iota_f \colon Y_f \hookrightarrow Yc$ by declaring $Y_f \bullet = \{ \alpha \colon \bullet \to c ~|~ \exists f_i ~ \alpha \mbox{ factors through } f_i \}$. In this manner, we can encode the usual "*$X$ descends along the cover $f$*" with "*precomosition with $\iota_f$ is a isomorphism*".

A site is a category equipped with a coverage $\mathcal{J}$ assigning to each object $c$ a collection of covering families $\mathcal{J}c$ which are sets of maps $f = \{ f_i \colon c_i \rightarrow c \}_I$ such that the covering families are *supported under pullback* i.e. $\forall f \in \mathcal{J}c,~\varphi \in \mathcal{C}(b,c)~ \exists g \in \mathcal{J}b: Y_g \hookrightarrow \varphi^*Y_f$ where $\varphi^*Y_f$ is the pullback of $Y_f \hookrightarrow Yc$ along composition with $\varphi$.

Then a *sheaf* with respect to the site $(\mathcal{C},\mathcal{J})$ is a presheaf $X \colon \mathcal{C}^{\operatorname{op}} \to Set$ satisfying descent for all the $Y_f$.

We can generate a Grothendieck coverage $\mathcal{G}$ from any coverage (for each $c$ intersect $\mathcal{G}_\lambda c$ all such coverages $\mathcal{G}_\lambda$ and note that the trivial coverage assigning all subsets of maps to $c$ as covering families is Grothendieck). What is not clear to me is how, "One can then show that for every coverage, there is a unique Grothendieck coverage having the same sheaves." as the nLab entry for coverage claims.

Question:

How is it that sheaves with respect to $\mathcal{G}$ are the same as those with respect to $\mathcal{J}$? In particular, given $X \in Sh(\mathcal{C},\mathcal{J})$, a cover $f \in \mathcal{J}$, and map $\varphi$; support under pullback gives us $g \in \mathcal{J}$ with:

$ Y_g \overset{\iota}{\hookrightarrow} \varphi^*Y_f \overset{\iota_{\varphi^*Y}}{\hookrightarrow} Yb$

That $X$ is a sheaf gives us precomposition with $\iota_g = \iota_{\varphi^*Y}\iota$ is an isomorphism. How does that imply precomposition with $\iota_{\varphi^*Y_f}$ is an isomorphism?