This is expected, by default all your JSS app items will be "JSS Development Workflow". So when you deploy your App first time all items will be in "Development Mode".
So whenever you run the below/relevant commands, all your yml/yaml will overwrite respective items in Sitecore and you will loose if you made any update in Sitecore directly.
jss deploy app --includeContent
jss deploy items --includeContent
Refer the warnings in any of the item which you updated in Sitecore but not in final state of workflow, it explains.
To avoid this you may need to execute/manage workflow effectively. Check your "Review" tab, if you don't want your jss build to update item then just move it to "Content Mode" which denies access to import user and next build will not overwrite. Also if it is "Published" the content will not be overwritten because "Sitecore\JSS Import Service Users" doesn't have "Workflow State Write" access which is needed to update items when they are in a specific workflow state.
Sitecore documentation will have lot of additional details about workflow states/security and code-first approach etc.
Development Mode - Import can overwrite field values and route item
Content Mode - Import user is denied item write access. Import will
skip writes on the item. For route items, this means that any
rendering changes or updates to datasource items are also skipped.