通过FTP上传Git问题

时间:2015-03-18 10:14:26

标签: git ftp

我们正在使用Git将我们的服务器(dev和live)与我们的开发机器同步。开发人员通过SFTP上传到开发服务器以测试功能和更改。然后,当一切都完成后,它将被提交并最终被引入Git存储库。

问题在于

git commit -a -m 'Message'   # on local machine
git push origin master       # on local machine
git pull origin master       # on server
服务器上的

几乎总是不会简单地合并文件,删除或忽略未跟踪的文件。它认为有改变和建议,但我们当然不想!例如,在下面的清理和重置步骤之后,我们将添加两个未跟踪的文件夹?!

我们试过了

git reset --hard HEAD
git clean -f
git fetch

阅读许多git指南。但它不像

那样有效
svn up --force

我被建议不时同步服务器,因为上传失败等可能会出现不一致等等。这有什么问题?我们不能这样使用Git吗?要始终清理服务器目录需要做很多工作。

编辑:我应该补充一点,我们无法在本地进行测试,因为网络应用程序在域上强烈依赖,需要复杂的设置(Solr)。

通过NFS共享而不是FTP,这会更好吗?

1 个答案:

答案 0 :(得分:0)

您正在使用GIT错误。您不应该将FTP文件发送到服务器进行测试,您应该让您的GIT repo处理版本控制完全由您的开发人员通过提交提交已完成的功能。

我们非常有效地使用此设置:

  • GIT repo位于测试服务器上(不在工作的Web文件夹中)。

  • 开发人员承诺在他们正在进行的任何分支上使用git repo。

  • 如果提交分支是主分支,我们使用post-receive hook强制测试服务器将最新的更改提取到工作的Web文件夹中。

  • 然后,当我们在生产服务器上部署时,我们会强制生产工作的Web文件夹在完成所有测试后从主服务器执行拉取。

这称为' push-to-deploy'并且效果非常好。

通过这种方式,您可以完全控制测试服务器正在使用的分支,并确保只将完全测试的代码部署到您的生产服务器。

编辑:heres关于如何设置它的一个很好的答案。它与node.js有关,但原理是相同的。