I like to say that there is only a single abstract definition of cohomology: in any $(\infty,1)$-topos $\mathbf{H}$ given objects $X$ and $A$, the cohomology of $X$ with coefficients in $A$ is the connected components of the hom-$\infty$-groupoid $H(X,A) := \pi_0 \mathbf{H}(X,A)$.
Everything else one sees described as "cohomology" is, i claim, a special case and a special realization of this situation.
More on this point of view is at cohomology
In particular, ordinary abelian sheaf cohomology for sheaves on a cite $C$ is the cohomology in this sense of the (oo,1)$(\infty,1)$-topos of oo$\infty$-stacks on C where the coefficient objects are, moreover, restricted to be objectwise in the image of the Dold-Kan map (are "maximally abelian oo$\infty$-stacks").
From this perspective the relation betwen Cech-cohomology and other means to compute sheaf-cohomology become conceptually evident: all of these are just models to model the (oo,1)$(\infty,1)$-cateorical hom-space $\mathbf{H}(X,A)$: Cech cohomology does so by finding cofibrant versions of $X$ (namely Cech nerves of Cech covers), derived-functor-style sheaf cohomology usually does so by finding fibrant versions of $A$ (namely injective resolutions of sheaves).
That this is the relation between the two is of course implicitly the old Verdier hypercovering theorem. A particularly clear-sighted description of this is the remarkable old article by Kenneth Brown, Abstract homotopy theory and generalized sheaf cohomology.
A summary of that in the light of the above comments is at nlab:abelian sheaf cohomology.
Technical details are also at Cech cohomology.