As a couple planning a vacation for our family,
We want a resort that has activities appropriate for our teenage children,
as well as couples,
so that we can all enjoy our vacation.
Notice the middle line:
“We want a resort that has activities appropriate for our teenage children, as well as couples ”
We can break this into stories for the teenagers, as well as the couple.
As a teenager on vacation with my family,
I want activities to do with other teens,
so that I can meet other teens to hang out with
instead of being stuck with my lame parents the whole time.
and
As a couple traveling with my our family,
We want romantic activities to do as a couple,
so that we can rekindle our love connection.
Agile version control using Git is simple. A developer branches the code to work on a User Story. Git makes it easy to merge the branch back into the trunk. A simple example is shown in the following diagram where all User Story branches are merged back into the trunk by the end of each sprint.
However, generally you need control of what features are delivered to "production". This is often accomplished by having dual streams - an on-going "development" stream (or branch) and a separate "delivery" stream (trunk) allowing control over when features are delivered.
This is very different from traditional version control where branches are eventually discarded (after possibly having been merged back into the trunk) - instead you have two on-going streams. This approach is only possible with a version control system such as Git where a version (ie, a node in the diagrams) can have two parents - in the diagrams this is any node with two outgoing arrows.
For a large project with multiple teams I have even seen the suggestion of multiple on-going "development" branches (eg: see Version Control for Multiple Agile Teams). I have not tried this but I have reservations because code merges between the teams would occur irregularly and might easily be forgotten (remember the rule of merge early and often). The two teams might create conflicting changes which are not discovered until the conflicting code is merged from the trunk into the other teams stream.