Managing cookbooks with git is as easy as managing any other code with git. The only question is whether you create one git repository for each cookbook, or a single monolithic one.
The general recommendation seems to be a separate git repo for each cookbook.
On using git to update the chef server: don’t. Use the right tool for the job. The chef server doesn’t simply store files in some directory, but also includes a database that needs to be updated for chef to work correctly. You could conceivably talk to Chef’s API over https.
knife isn’t the right tool for the job, either. The recommended tool for uploading and managing cookbooks is berkshelf.
What many people in your situation seem to be doing is use git hooks to trigger uploading cookbooks using the standard tools. I haven’t had that need yet, so I can’t tell exactly how it works.
Whom the IT Pros Call
Our values: Privacy, Liberty, Justice