#C, 52 bytes
<!-- language: lang-c -->

    j;f(char*s){for(j=0;*s=s[j];s[j]==94?s--,j+=3:s++);}

We define a function `f` that takes a pointer to the string as input. After the function call, that pointer will contain a modified string.

A simple test:

<!-- language: lang-c -->

    int main(int argc, char** argv) {
        char buf[300] = "Digital Trauma^H^H^H^H^H^H^H^H^H^H^H^H^H^HMaria Tidal Tug^H^H^H^H^H^H^H^H^H^H^H^H^H^H^HDigital Trauma";
        f(buf);
        printf(buf);
        return 0;
    }

The above prints:

    Digital Trauma