IMO the neat thing about a "git push" deployment is that you are deploying a particular commit.
The build server could annotate the build with the commit's hash, making that deployment reproducible.
If you just have a local ./deploy script, a dev might deploy changes that never make it into version control.
(Even if ./deploy forces the working copy to be clean and the index to be empty, the dev could still "git reset --hard" afterwards and the version that has been deployed is lot)
Comments
IMO the neat thing about a "git push" deployment is that you are deploying a particular commit.
The build server could annotate the build with the commit's hash, making that deployment reproducible.
If you just have a local ./deploy script, a dev might deploy changes that never make it into version control.
(Even if ./deploy forces the working copy to be clean and the index to be empty, the dev could still "git reset --hard" afterwards and the version that has been deployed is lot)