Synchronizing Database Configuration Across Environments I am the sole developer on a Drupal 7 site, and I need advice. I use Git, having a 'master' branch (the published version of the site) and a 'dev' branch (the experimental features for future versions of the site). 

Using Capistrano for deployment, I've gotten it fairly easy to deploy the two branches to their respective URLs, but I'm up against this wall where I'm not sure how to merge the 'dev' branch database into the 'master' branch after the new features are ready for production.

With a lot of Drupal's structure stored in the database, like Content Types and Views, what solutions are there for merging database changes from the 'dev' branch's url to the 'master' branch's url? So far, I've been writing down the changes I make and then recreating them on the production site before I merge the dev branch back into the master branch.
You cannot reliably 'merge' database copies. One way or another, everything has to be managed through code. 

In Drupal 8 this is handled with the Configuration Initiative, but in D6 and D7 you have to use a tool like the Features module, which provides an interface to create 'features' (which are really exportable content stored in specific modules). You can export things like site configuration, content types, views, etc. into a feature, then push the code from one branch to another, and have that feature's changes "apply" on to the new database. 

The Features module has its share of problems, but it does work fairly well for the most part, and is the go-to solution for managing database changes.

In addition to Features, you'll likely also want Strongarm, which lets you use Features to export data from the variables database table.

Alternatively, many people use update hooks to handle their database changes; that's a bit more involved and requires a strong understanding of Drupal development.

You may also want to read through these resources:


Staging Drupal
Drupal Configuration Management With Features