Optimal workflow for Local / Staging / Production server stack + Git

T_Conroy picture T_Conroy · Nov 9, 2013 · Viewed 14.9k times · Source

I am looking to incorporate a web development workflow that allows me to do the following:

  • Develop / Test locally
    • mimics production server (many subdomains, a few mysql DBs)
    • stays synced between desktop & laptop to allow on-the-go development
  • easily push local -> staging
  • easily push staging -> production
  • easily live-edit on the production server (occasionally need to for very minor content updates, typo changes, etc. Right now I spend a lot of time making small edits, pushing it to staging, then pushing to production which takes awhile for minor things.)

I am also new to Git. I have begun test the waters with Git in my personal projects, however the project I have inherited (with the production/staging environments) has not used any version control to this point.

Questions:

  • how can I easily adapt a large established project to a local environment (XAMPP)?
  • how can I sync my local environment between dev-laptop and dev-desktop?
  • Is Github worth it in this type of pre-established project / server setup? It seems like it adds a lot more steps (ex: local->push to git repo -> download repo to staging server -> push staging server to live server). Also I am concerned about maintaining privacy/security.

essentially I'm the single developer who was handed a fairly large project and I just want to try and make things as easy/straightforward on myself as possible. :)

Answer

Florian von Stosch picture Florian von Stosch · Nov 10, 2013

Branches are one way to facilitate this workflow. There is a great blog post about how to use Git branches to manage a typical development workflow.

You would then have one branch for production (e.g. master), one for the live-edits which correspondes to the hotfix branch in the post above, and another one for development.

To sync your local environments on laptop and desktop, you can use the aforementioned development branch also as a remote branch and have both devices push their local commits on this branch to the remote repository.