log to your remote server root user sudo adduser user sudo ssh user@server.com mkdir ~/deploy-folder git init --bare ~/project.git cd ~/project.git/hooks nano post-receive copy/paste the bash script #!/bin/bash Copy and paste below script #!/bin/bash while read oldrev newrev ref do # only checking out the master (or whatever branch you would like to deploy) if [[ $ref =~ .*/master$ ]]; then echo "Master ref received. Deploying master branch to production..." git --work-tree=/home/inspire/deploy-folder/ --git-dir=/home/inspire/repo.git/ checkout -f else echo "Ref $ref successfully received. Doing nothing: only the master branch may be deployed on this server." fi done # end of file chmod +x post-receive type ls [you'll see post-receive file green meaning it's executable now] type pwd [make sure your file directory is same as your script] go to your local computer, and go to the folder you want to git. Use git bash program, and go to the folder if you're on windows cd ~/path/to/working-copy/ git init git remote add production user@YourServerDomain.com:/home/user/project.git now make a file, add it to your git, commit it and push it to production server nano test.txt [then add some text, ctrl x and save it] git add . git commit -m 'test1' git push production master now go to your server and go to your deploy folder, you'll see test.txt file in there