We are trying to setup an automated deployment environemt with Git/Github. We have 3 different environments; local, test and live. When we add a new feature on local, we first u
Whether or not git is the right choice, is a good question.
But if you're going to do it you should read through the gitworkflows manual page. Specifically, what it'll recommend and what sounds right given your problem above is that you need to put each separate "thing" to be developed into a topic/feature branch, and then merge that branch into the right tree when its done. That lets you separate out things so that you merge what is needed and stable and don't merge what isn't.
I've finally found what I was looking for. http://beanstalkapp.com seems the best choice. It has automatic deployment feature and supports Git. After testing it for a week, I can say that it works very stable and fast. Thanks everyone for helping me and trying to show me the way.
It sounds like you need a Continuous Integration system. I have had great success with both Jenkins and Webistrano.
With regard to the "what files should we copy?" problem. Are you using git tags yet? If not, start using them!
I ended up creating my own rudimentary deployment tool which would automatically pull down new updates from the repo - https://github.com/jesalg/SlimJim - I don't think it will fit your needs exactly but you can read how it's setup and maybe you might get some ideas out of it.
I'm currently using git in such a way and just posted a blog article about here.
What I usually do is use a post-receive hook to look for commits pushed into a release branch, and when found deploys the codebase using the git archive command.
This is fine for small projects, if you have multiple developers working on a project or it's a large and complex codebase I do recommend the use of a Continuous Integration system like Jenkins as suggested in a previous comment.
Have a look at this and see if it suits your needs (includes a simple bash deployment script)
Cheers