【问题标题】:Git problems with upload via FTP通过 FTP 上传的 Git 问题
【发布时间】:2015-03-18 10:14:26
【问题描述】:

我们正在使用 Git 将我们的服务器(开发和实时)与我们的开发机器同步。开发人员通过 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 吗?一直清理服务器目录的工作量很大。

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

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

【问题讨论】:

    标签: git ftp


    【解决方案1】:

    您错误地使用了 GIT。您不必将文件 FTP 到服务器进行测试,您应该让您的 GIT 存储库完全处理版本控制,而您的开发人员仅通过提交提交已完成的功能。

    我们非常有效地使用了这个设置:

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

    • 开发人员提交到他们正在处理的任何分支上的 git 存储库。

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

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

    这称为“push-to-deploy”,效果非常好。

    通过这种方式,您可以完全控制发生的事情、测试服务器正在使用哪个分支,并且可以确保只有经过全面测试的代码才会部署到您的生产服务器。

    编辑:heres 一个关于如何进行设置的好答案。和node.js有关,但原理是一样的。

    【讨论】:

    • 您说开发人员上传到与 repo 不同的文件夹。但是你如何同步这两个文件夹呢?在直播服务器上,不会有上传,只有 git pull。那应该行得通。出问题只是测试/开发服务器。
    • 不,我说开发人员提交到 repo,然后如果他们的提交分支是 master,一个 post-receive 钩子会触发从更新文件的测试服务器上的 master 拉取。
    • 好的。直到现在我们才使用分支。我真的不明白为什么我们需要一个自定义脚本来做我们想做的事。 Git 应该能够像 SVN 那样开箱即用吗?
    • 你不使用分支?那么你根本没有正确使用 GIT
    • 我知道,但我首先想在这里解决这个问题,然后再使用分支。它们增加了一些额外的复杂性..
    猜你喜欢
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2012-04-26
    相关资源
    最近更新 更多