为现有文件集创建git仓库,然后将更改推送给它

时间:2014-01-30 14:02:20

标签: git

这是我第一次尝试使用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,但这导致了更多的问题,因为我必须检查服务器上的不同分支,推送到主服务器,然后再次检查主服务器以查看更改!不理想,因为我希望能够在不在服务器上运行命令的情况下对网站进行更改。

2 个答案:

答案 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