$ git add .
Wait, what? No!This will add the whole venv, which contains symlinks, scripts with shebangs, and potential binaries, and as such is totally linked to your system, so this definitely breaks if your python ends up in another location or you're entirely on another OS.
What should be done is
virtualenv env --no-site-packages
echo "/env" >> .gitignore
pip freeze > requirements.txt
So when you want to restore/deploy you'd do git clone foo
cd foo
virtualenv env --no-site-packages
source ./env/bin/activate
pip install -r requirements.txt
I'm not even considering the issues regarding the presented git workflow. If one wants to semi-automate a git workflow, one would rather use git-flow instead of this prepare_deployment hack.