In light of Marc Hoyois's observation that $Sh_G(X)$ is the same as presheaves on some easy category, I will answer the more general question:

Given a functor $f \colon \mathcal{C} \to \mathcal{D}$, how can I explicitly compute the three functors $f_! \dashv f^* \dashv f_*$?

**Background**

If $F \colon \mathcal{D} \to \mathbf{Vec}_k$ is a functor, then precomposing with $f$ gives another functor $\mathcal{C} \overset{f}{\to} \mathcal{D} \overset{F}{\to} \mathbf{Vec}_k$ which we write as $f^* F$ because it comes from "pulling $F$ back" along $f$. In the case where $f$ is an injection, then $f^*$ restricts the action from $\mathcal{D}$ to $\mathcal{C}$. If $f$ is a surjection, then $f^*$ inflates the action up from $\mathcal{D}$ to $\mathcal{C}$.

Observe that $f^*$ is always an exact functor, since all it does is reindex the linear maps we already have. As a general rule, that means we should look for a left adjoint (since $f^*$ is left exact) and a right adjoint (since $f^*$ is right exact). They exist! (Not only do they exist, but they are called Kan extensions; see nlab for details. I learned Kan extensions from Emily Riehl's excellent textbook.) The three functors satisfy
$$
\mathrm{Hom}(f_! E, F) \simeq \mathrm{Hom}(E, f^* F) \;\;\;\;\;\; \mathrm{Hom}(f^* F, G) \simeq \mathrm{Hom}(F, f_* F)
$$
which seems useful but maybe not explicit enough for everyday use.

**First examples**

Let $\bullet$ be the terminal category so that a functor $V \colon \bullet \to \mathbf{Vec}_k$ is just a $k$-vector space. Our first two examples take one of our categories to be $\bullet$.

*Example 1: $\mathcal{C} = \bullet$*

A functor $\bullet \to \mathcal{D}$ is nothing but an object of $\mathcal{D}$. So suppose $d \in \mathcal{D}$ is some object, and write $i_d \; \colon \, \bullet \to \mathcal{D}$ for its inclusion.

Plainly, $(i_d)^*$ is evaluation of $F$ at $d$ so that $(i_d)^* F = Fd$. Let us set about computing $(i_d)_! E$. Since $(i_d)_!$ is additive, the key example is $E = k$, a one-dimensional vector space. The main property of $(i_d)_! k$ is that homming from it is the same as evaluating at $d$:
$$
\mathrm{Hom}(\,(i_d)_! k \, , F) \simeq \mathrm{Hom}( k , (i_d)^* F) \simeq \mathrm{Hom}( k , Fd) \simeq Fd.
$$

In other words, we want the representable functor $\mathrm{Hom}(\,(i_d)_! k \, , \, - \,)$ to be evaluation at $d$. But now we recall the Yoneda lemma, which says that evaluation at $d$ is *already represented* by an extremely explicit functor $Y^d$! And now, by Yoneda's lemma again, we get an isomorphism between representing objects $(i_d)_! k \simeq Y^d$.

Of course, the functor $Y^d$ is itself representable: $Y^d = k \mathrm{Hom}_{\mathcal{D}}(d, -)$. It sends an object of $\mathcal{D}$ to the free $k$-vector space on the set of morphisms from $d$.

From now on, we think of $Y^d$ as "freely generated by a vector in degree $d \in \mathcal{D}$" since a map from it is the same as a choice of vector in degree $d$.

(Of course, $d$ need not be a number or anything like that; "degree $d$" is a shorthand where we think of a functor $F \colon \mathcal{D} \to \mathbf{Vec}_k$ as a $k$-vector space that's graded by the objects of $\mathcal{D}$, and with structure maps coming from the arrows of $\mathcal{D}$.)

*Example 2: $\mathcal{D} = \bullet$*

In this case, there is only the terminal functor $t\, \colon \mathcal{C} \to \bullet$. Since we made no choices, we can expect $t_!$ and $t_*$ to be familiar and important.

If $E \colon \mathcal{C} \to \mathbf{Vec}_k$, then the defining property of $t_! E$ is the same as the defining property of $\mathrm{colim}_{\mathcal{C}} E$, and similarly for $t_* E$ and $\mathrm{lim}_{\mathcal{C}} E$. In brief,

$$
t_! \, = \mathrm{colim}_{\mathcal{C}} \;\;\;\;\;\;\;\;\; t_* \, = \mathrm{lim}_{\mathcal{C}}.
$$

Or, thought of another way, $t_! = H_0(\mathcal{C}; -)$ and $t_* = H^0(\mathcal{C}; -)$. This notation reminds us that we also want to compute the derived functors $L_p t_!$ and $R^q t_*$.

**Maps between the free modules $F^d$ and "matrices over $\mathcal{D}$"**

Let $x, y \in \mathcal{D}$ be objects. By the main property the free modules, we may compute the maps from one free module to another

\begin{align}
\mathrm{Hom}(Y^y, Y^x) &= Y^x y \\
&= k \mathrm{Hom}_{\mathcal{D}}(x, y).
\end{align}

So a formal $k$-linear combination of morphisms $x \to y$ is the same as a map $Y^y \to Y^x$. The order switches!

(This is the same switch that makes $\mathrm{End}_R(R_R) \simeq R^{op}$; only the left action of $R$ on $R_R$ commutes with the right $R$-module structure. Similarly, only maps between the free modules of $\mathcal{D}$ that are induced by precomposition commute with the (postcomposition) action of $\mathcal{D}$. )

In the same way that a matrix over a ring gives a map between free modules for the ring, we want the same bookkeeping for maps between free modules for $\mathcal{D}$. In light of our calculation of $\mathrm{Hom}(Y^y, Y^x)$, a map $Y^{y_1} \oplus \cdots \oplus Y^{y_n} \to Y^{x_1} \oplus \cdots \oplus Y^{x_m}$ is naturally given by a "matrix over $\mathcal{D}$"

$$
A = \left(
\begin{array}{ccc}
a_{11} & \cdots & a_{1n} \\
\vdots & \ddots & \vdots \\
a_{m1} & \cdots & a_{mn} \\
\end{array}
\right)
$$
where we think of the rows as labeled by the objects $x_1, \ldots, x_m$ and the columns as labeled by $y_1, \ldots, y_n$. We need the row and column labels because the entries are drawn from vector spaces that depend on the row and column label! The rule: $a_{ij}$ is a $k$-linear combination of $\mathcal{D}$-morphisms $x_i \to y_j$.

It is an amusing exercise to multiply two such matrices if the column labels of the first matrix match the row labels of the second. You will find that the morphisms keep themselves sorted out. Two morphisms that you need to multiply will be composable, and two that need to be added will have matching source and target.

(I introduced the terminology of "matrices over $\mathcal{D}$" in my thesis, but the general idea surely dates back to at least the early 70s, for example to Mitchell's Rings with several objects)

**Defining a functor $F \colon \mathcal{D} \to \mathbf{Vec}_k$ by a presentation matrix**

If the elements of some ring $R$ can be represented by alphanumeric strings, then one way to type an $R$-module into a computer is by a presentation matrix. The syntax of such a matrix is routine. The semantics come from thinking of the cokernel of the map between free modules that the matrix represents.

Similarly, a matrix over $\mathcal{D}$ gives a presentation for a functor $\mathcal{D} \to \mathbf{Vec}_k$. In detail, if we let $\natural \colon k \mathrm{Hom}_{\mathcal{D}}(x, y) \to \mathrm{Hom}(Y^y, Y^x)$ be the natural isomorphism coming from Yoneda's lemma, then any matrix $A$ over $\mathcal{D}$ with row labels $x_1, \ldots, x_m$ and column labels $y_1, \ldots, y_n$ gives rise to a natural transformation
$$
A^{\natural} \, \colon \, Y^{y_1} \oplus \cdots \oplus Y^{y_n} \to Y^{x_1} \oplus \cdots \oplus Y^{x_m}
$$
coming from applying $\natural$ to every entry. Then we say that $A$ gives a presentation matrix for a functor $F \colon \mathcal{D} \to \mathrm{Vec}_k$ if there's a natural isomorphism $F \simeq \mathrm{coker}(\, A^{\natural} \,)$.

Which functors $F$ may be so written? Well, the finitely presented ones. But note: if the category $\mathcal{D}$ is finite (meaning finitely many morphisms), then a functor is finitely presented if and only if it lands in the finite dimensional part of $\mathbf{Vec}_k$.

To build a presentation matrix is then not so hard.

Pick a few vectors $v_i \in F x_i$ for various $x_i \in \mathcal{D}$ so that pushing these vectors around using the arrows of $\mathcal{D}$ is enough to span every $k$-vector space $Fd$ for $d \in \mathcal{D}$. (Using our finiteness assumptions, we could naively just pick a basis for every $Fd$, but this would not be efficient!) These vectors are the "generators" of $F$, and they give rise to a surjection

$$
Y^{x_1} \oplus \cdots \oplus Y^{x_m} \twoheadrightarrow F
$$

using the Yoneda lemma to interpret the vectors $v_i \in Fx_i \simeq \mathrm{Hom}(Y^{x_i}, F)$ as natural transformations.

Of course, this surjection has a kernel $K$. Our finiteness assumption tells us that we may similarly pick generators for the kernel. Thinking in terms of the original functor $F$, these will be relations on the generators $v_i$. For example, there may be some morphism $\varphi \colon x_1 \to d$ and another $\psi \colon x_2 \to d$ so that the induced linear maps $F\varphi \, \colon Fx_1 \to Fd$ and $F\psi \, \colon Fx_2 \to Fd$ send the vectors $v_1, v_2$ to the same place. In this case, there would be a column in the presentation matrix
$$
\left(
\begin{array}{c}
\varphi \\
-\psi \\
0 \\
\vdots \\
0 \\
\end{array}
\right)
$$
and the column label would be $d$. More generally, we could have a linear combination that draws on several generators $v_i$ in which case the column would be potentially more complicated. Note, however, that an element of $Kd$ is the exact same information as a matrix over $\mathcal{D}$ with row labels $x_1, \ldots, x_m$ and a single column with label $d$. So a degree-$d$ vector in the kernel gives rise to a column in the presentation matrix with label $d$.

In this way, each generator of $F$ gets a row in the presentation matrix, and each generator of $K$ gets a column. The row label is the degree of the generator, and the column label is the degree of the relation.

**Computing $L_p f_!$ and $R^q f_*$ on a finitely presented functor with presentation matrix $A$**

The method we just described of finding a presentation matrix for a functor may be extended leftward in an iterative fashion, so as to give as many steps in a resolution as required. If $E \colon \mathcal{C} \to \mathbf{Vec}_k$ is a finitely presented functor with presentation matrix $C_0$, then extend the resolution $p+1$ steps in preparation for computing $L_p f_! E$ obtaining matrices over $\mathcal{C}$ called $C_1, \ldots, C_{p}$ so that $C_i C_{i+1} = 0$. By construction, the induced chain complex of free functors

$$
* \overset{C_p^{\natural}}{\longrightarrow} * \overset{C_{p-1}^{\natural}}{\longrightarrow} \;\;\;\;\; \cdots \;\;\;\;\; \overset{C_1^{\natural}}{\longrightarrow} * \overset{C_{0}^{\natural}}{\longrightarrow} * \longrightarrow 0
$$

is exact except at the very end where the homology is $F$.

Ok, we are ready now. Apply the functor $f$ to the morphisms appearing in the entries of $C_i$. The result is a sequence of matrices $fC_0, fC_1, \ldots, fC_p$, still with $(fC_i)(fC_{i+1}) = 0$ because $f$ is a functor. Each $fC_i$ is now a matrix over $\mathcal{D}$, and so we get a chain complex of free functors $\mathcal{D} \to \mathbf{Vec}_k$

$$
* \overset{(fC_p)^{\natural}}{\longrightarrow} * \overset{(fC_{p-1})^{\natural}}{\longrightarrow} \;\;\;\;\; \cdots \;\;\;\;\; \overset{(fC_1)^{\natural}}{\longrightarrow} * \overset{(fC_{0})^{\natural}}{\longrightarrow} * \longrightarrow 0.
$$

This sequence may have homology! Indeed, the top homology is $L_p f_! E$, the thing we were trying to compute. In particular, $f_! E$ is the cokernel of $(fC_0)^{\natural}$.

In order to compute $R^q f_*$, just take dual vector spaces to build $E^{\vee} \colon \mathcal{C}^{op} \to \mathbf{Vec}_k$. Then $(R^q f_*) E \simeq ((L_q f^{op}_!) (E^{\vee}))^{\vee}$.

**Computing homology of $F$**
As an example, suppose we wish to compute the homology $H_0 (\mathcal{D}; F)$, which is to say, the colimit of $F$. Well, write a presentation matrix over $\mathcal{D}$ for $F$, replace each morphism that appears in the matrix with the scalar $1 \in k$, and take the cokernel of that matrix. That's the colimit!

More generally, to get the homology $H_p(\mathcal{D};F)$, the "higher colimits", just write a resolution for $F$ using matrices over $\mathcal{D}$, and replace every morphism in every matrix with the number $1$. This gives back a chain complex over $k$ whose homology computes $H_p$! And if you want cohomology, you can take $k$-linear duals and compute using the opposite category in exactly the same way.