Switch WordPress Database based on Git Branch

I’m working on a large redesign project where lots of database changes are going to take place. In order to not mix-up the current master branch with the new redesign changes, I made a new database so I can keep things separate. The only trick is to remember to change out the database in wp-config.php when I switch branches.

That’s not going to happen. I’ll definitely forget. Regularly.

Fortunately, you can grab the branch you’re on via php with a bit of code from user program247365 on stackoverflow.

I took that and added a bit to choose the database I want based on the branch I’m on. You’ll need to change out the $db_name and $branch variables to match your own, then you’ll be good to go!

// get branchname
function config_get_git_branch() {
    // This assumes you have your .git directory at the same level as wp-config.php.
    // If you don't, then change the path to wherever your .git director is
    $stringfromfile = file('.git/HEAD', FILE_USE_INCLUDE_PATH);

    $firstLine = $stringfromfile[0]; //get the string from the array

    $explodedstring = explode("/", $firstLine, 3); //seperate out by the "/" in the string

    $branch = $explodedstring[2]; //get the one that is always the branch name

    return trim($branch);

// choose which db you want to use
function config_get_db_name() {
    $branch = config_get_git_branch();

    // change these $db_name and and $branch strings to match
    // whatever ones you want.
    if($branch === 'child') {
        $db_name = 'child_db';
    } else {
        $db_name = 'site_db';
    return $db_name;

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', config_get_db_name());

Now you’ll never forgot to switch the DB out when you checkout to a new branch. Happy coding!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: