Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Update website with a single command (git push) instead of FTP drag and dropping

Situation:

  • I have a local copy of a website
  • I have a server that I have SSH access to

What do I want to do?

  • Commit locally until I'm happy with my code
  • Make branches locally
  • Have one master branch that is the one that should be pushed to the server
  • Update the website using a single command (git push origin master)

If I set up a git repo locally using git init, and then push to a folder on the server, it doesn't work. When I FTP to the server to check the files, they're actually there. When I SSH into the server and do git status, it's not clean, even though it should be since I just pushed to the server.


Steps I'm doing:

  1. Make a new folder on my computer (mkdir folder_x)
  2. Go into that folder (cd folder_x)
  3. Set up a new git repository there (git init)
  4. (git repository sets up successfully)
  5. Push the repository to the server using git push origin master (where origin is set up as user:[email protected])
like image 522
Wolfr Avatar asked May 19 '09 16:05

Wolfr


2 Answers

You need to write a post-receive hook that runs git checkout -f after the remote git repository receives a push. See Using Git to manage a web site for details.

like image 183
joeforker Avatar answered Nov 08 '22 13:11

joeforker


When you push to a git repository, it doesn't update that repository's working files. Generally when you push, you should be pushing to a bare repository--- that seems to be how they intended git push to work.

For one of my (local ) projects, I wrote a script to automatically check out the latest "ui" subdirectory when I push my work to a deployment repo. It's embedded in a previous answer here: Developing Django projects using Git

You could also simply have the post-update hook on the server do a "git reset --hard master" if someone pushes an update to master, and use a non-bare repo rather than having a separate area for checked-out files.

like image 1
araqnid Avatar answered Nov 08 '22 13:11

araqnid