Git: updating website when pushing to remote repository?

I have a website that I’d like to update whenever I push to a remote repository. I am coming from a svn background and still trying to figure out git.

Right now, I have done the following:

  • Setting Git/SmartGit SSH Client's home folder
  • Do I need to do 'git init' before doing 'git clone' on a project
  • git ahead/behind info between master and branch?
  • git on windows shows modified files all the time, even for newly cloned repo
  • git blame on a line modified multiple times?
  • How to make git diff --ignore-space-change the default
    • Setup a Git repository on my local machine containing the website.
    • Cloned the (bare) repository to my web server.

    Now I’m a bit stuck. I can push the changes to my bare repository on the server but I have no idea of how to checkout a working copy of the repository in my www directory and automatically update it whenever I push my local repository to the server. I’ll probably need a hook script right?

    Related question, Deploy PHP using Git, partially answers my question, but I’d like to know what the script is actually doing.

  • Git add lines to index by grep/regex
  • How to commit a partial file (hunks) to git in pycharm
  • Bitbucket git credentials if signed up with Google
  • getting “fatal: not a git repository: '.'” when using post-update hook to execute 'git pull' on another repo
  • What does this do: git branch -f
  • Why can't I push to this bare repository?
  • 2 Solutions collect form web for “Git: updating website when pushing to remote repository?”

    This worked for me, it might work for you:
    A web-focused Git workflow

    I found a very good (and elegant) solution for me on the Caius Theory Website

    It basically starts with a bare repository and changes the worktree to the web-server folder. After that it uses a post-receive hook to update the work-tree after every push it receives. An elegant and easy to follow procedure!

    Additional to the setup in that article I added a soft-linked “.git” directory from the website location back to the git repository location:

    ln -s /home/caius/git/somesite.git/ /home/caius/vhosts/somesite.com/htdocs/.git
    

    This way I can checkout another branch on the web-server by logging into it and using “git checkout ” in the website folder!

    I also used a slightly modification on the Python-Script “ygit-push-all.py” from here to update my multiple machines which all run the same framework code with using different config files. You could even setup a branch per server (like Demo/Development).

    In addition I added the following aliases to my global git config file:

    [alias]
        push-all = !ygit-push-all.py
        check-all = !sh -c 'git branch -r -v | grep master | awk \"{ print \\$1, \\$2 }\"'
    

    git push-all will update all my remote locations

    git check-all will show me the rev on which every remote master branch is

    Git Baby is a git and github fan, let's start git clone.