Reputation: 76766
This is probably quite a newb question, but I can't seem to figure it out.
Here's what I did...
On the server (via ssh):
git init
I think?)At my office:
...now, on the server, if I do git show
, it shows a diff where the server's last copy of stuff is removed and the stuff I pushed from my office is being added. That's what I want to happen. What I can't figure out is: what do I need to do on the server to make the changes I pushed from my office become "live?"
I've had pretty good success deploying websites with svn in the past, and I figure I can get away with it with git too... but obviously I'm missing some piece of the puzzle. Thanks for any help.
edit - I just noticed this post: Git - pulling changes from clone back onto the master
Should I be pulling my office repo onto my server instead of pusing it there? So ssh from the office into the server and then have it git+ssh back into the office to pull that repo? That seems kind of crazy, I'd rather figure out how to make the push go through if possible.
rephrasing the question
I really just want to apply the patch shown by git show
. Does git have a built-in way of doing that?
answer
It looks like git checkout -f
on the server did what I wanted, but creating a --bare repo would have been a better way to go (I've changed to this setup now).
Upvotes: 1
Views: 2889
Reputation: 11296
If the git repo on the server you pushed to is for the live system, you would probably have to do a [EDIT] git reset [--hard|...] HEAD
on the server after a push I guess (see git-reset man page for details on whether using --hard
or something else; --hard
resets all non-committed modifications on your server).
If the live system is somewhere else on the server, do a git pull
from your repo you pushed to (in the directory with your live system).
push and fetch are complementary, i.e. pushing from A to B is like fetching A from B.
pull is a fetch followed by a checkout.
EDIT:
You should also read the article linked to by jmohr on the subtle differences between push and fetch / pull: git push not send changes to remote git repository
Upvotes: 1
Reputation: 2247
Usually on the server you would do a git init --bare
which creates a repo with no working directory. If that is the route you took then you would have to pull the changes from there to the web directory as the "deployment" step. So your work flow might look like...
On dev PC:
1. git clone <path to server repo>
*make code changes*
2. git commit -am "fixed a bug"
*add some new feature*
3. git commit -am "added cool new feature"
4. git push origin master
On the server:
*cd to www folder*
5. git pull
At this point, none of your changes are visible on your website. You would need to "deploy" them.
5.Pulls the latest changes from the central repo on the server to the web server's folder(s) that are being served up on the web.
There git tutorials are very good as is "Pro Git", a free online book
Upvotes: 4