This seems such an elementary question, but I cannot see how to do this. Say that you are being given a metric (locally of course): $$ g =ds^2 = g_{\mu \nu} dx^\mu dx^\nu $$ Since the metric encodes the (local) geometry of your manifold, I would guess that I can recover the tangent space from it, but I fail to see how to do this? Maybe, it is easier to first figure out the normal vectors at a point, before being able to calculate the tangent vectors (which means that we assume that the manifold is a submanifold of a larger space)? In which case, how can this be achieved?
Let me present a problem to illustrate my issue. Suppose your are been given a metric space, say $\mathbb{R}^n$ along with the flat (Euclidean say) metric: $ds^2 = dx_1^2 + dx_2^2 + \cdots +dx_n^2$. Now, suppose you have some submanifold embedded in this space $\mathcal{M} \subseteq \mathbb{R}^n$. For concreteness let us say that we have $\mathcal{M}$ being an m-sphere (m < n). Now, we can pullback the metric on this submanifold to get the usual metric on a m-sphere. But that is not all! We can also clearly proceed to calculate the tangent vectors on the submanifold (by viewing them as vectors in $\mathbb{R}^n$). Now, the things is, imagine I were to only tell you that you have some submanifold in Euclidean space, for which I give you the metric. Why couldnt you figure out its tangent vectors? In the above example, if the metric I give you is "manifestally" the metric of an m-sphere, that should be all you need to know to calculate the tangent vectors, since you could just say: Well, this metric can be obtained by pulling back the Euclidean metric on the level set $h(x_1,...,x_n) = x_1^2+...+x_n^2$ at $h=1$ which caracterises the submanifold and which can also be used to calculate the tangents vectors since they will simply be the kernel of the derivative map of h.
You need a tangent space to define the metric (pretty much by definition of the metric) so you cannot recover it.
To be more precise: Lets look at any open set $U \subset \mathbb{R}^n$. At any point $x \in U$ you have a tangent space, which canonically can be identified with $\mathbb{R}^n$ (if you whish, just think about $\mathbb{R}^n$ instead of ''tangent space'' for the moment). Now, at each point $x \in U$ we choose a scalar product $g_x: \mathbb{R}^n \times \mathbb{R}^n \to \mathbb{R}$, which we demand to vary ''smoothly'' with $x$, meaning that for any two vector fields $X_{i}: \mathbb{R}^n \to \mathbb{R}^n, \ i=1,2$ the mapping $$x \mapsto g_x(X_1(x),X_2(x)) \in \mathbb{R} $$ has to be smooth.
This is precisely how we can locally think of a manifold, replacing $\mathbb{R}^n$ with the tangent space $T_xM$ ($x \in M$, which varies with the metric).
Finally, you do not need any metric to look at the tangent space: $T_xM$ is defined for any (smooth) Manifold, not only in the (pseudo) riemannian case, see this wikipedia article .