这是我第一次尝试使用git替换我网站的FTP。我以为我一直在努力,直到我试图将更改推回到网站。
这就是我所做的:
在遥控器上:
git init
git add .
git commit -m 'initial commit'
然后在本地我可以使用以下方法正确地从服务器获取所有文件:
git clone ssh://user@mysite.com/path/
成功将所有网站文件克隆到我的本地计算机。
我在本地进行了一些更改,在本地测试了更改,我已准备好将它们上传回网站。
我的理解是这应该有效:
git push origin master
然而,这既简单又简单:
git push
都给出了同样的错误:
! [remote rejected] master -> master (branch is currently checked out)
我在服务器上玩git checkout,但这导致了更多的问题,因为我必须检查服务器上的不同分支,推送到主服务器,然后再次检查主服务器以查看更改!不理想,因为我希望能够在不在服务器上运行命令的情况下对网站进行更改。
答案 0 :(得分:1)
您不能进入在其他计算机上签出的分支机构。可以这样想:如果有人推进你机器上当前已检出的分支,你的编辑就会发疯,你会在提交之前丢失对文件所做的更改。
因此,这种基于推送到服务器的方法是不可能的。
you --push--> server # error
相反,从服务器提取
创建一个中间存储库repo
you --push--> repo --pull--> server # works
必须使用repo
创建中间人git init --bare
,使其成为没有工作空间的回购,因此没有签出分支。
答案 1 :(得分:0)
在部署脚本中,您需要通过SSH登录每个生产服务器,并从每个存储库执行git pull
。
ssh user@hostname cd /path/to/repo && git pull