【发布时间】:2011-02-26 08:45:54
【问题描述】:
我想知道是否有一种简单的方法可以将 GIT 存储库推送到生产环境(在 FTP 服务器上)? 谢谢
【问题讨论】:
我想知道是否有一种简单的方法可以将 GIT 存储库推送到生产环境(在 FTP 服务器上)? 谢谢
【问题讨论】:
如果您使用的是 MacOS 并且喜欢 GUI,请查看 https://gitftp-deploy.com/。
这是一个不错的小应用程序,它使用 Git 跟踪更改并通过 FTP 仅上传更改的文件。
如果您不喜欢为数十个小团队的小型项目支付月费,这将特别方便。
【讨论】:
一个项目免费,效果非常好。
【讨论】:
你可以试试 FTPloy ...
“将更改推送到 GitHub 或 Bitbucket。”
“将更改自动部署到您的服务器”
您有一个免费项目可以试用。我目前正在使用一个小型 php 网站,它运行良好。网站上有一些错误,但它是一个活跃的项目,所以至少他们正在努力。
【讨论】:
我费了很大劲才弄清楚这一点。我已经找到了一种从各种来源(git-ftpINSTALL、git-ftpUPLOAD、git-ftpIssue、git-ftpPUSH)完成这项工作的简单方法。您可以阅读以供参考,但没有必要,因为我在下面提到了一步一步的过程。
第一件事:在 MAC OS 上使用 brew 安装 git 和 curl
brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp
运行以下命令:
git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install
使用 git 更新
git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install
设置
git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword
上传所有文件
git ftp init
或者如果文件已经存在
git ftp catchup
工作和部署
echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push
如果出现错误:pathspec 'index.txt' 与 git 已知的任何文件都不匹配。这意味着该文件尚未暂存,因此请添加该文件,然后尝试提交。
git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
希望这会有所帮助。
【讨论】:
您始终可以尝试使用 http://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem 将 ftp 挂载到本地目录。
那你就可以像this一样使用了。
【讨论】:
我发现 PHPloy 是一个很棒的工具,可以通过 FTP 将您的 Git 提交发送到远程服务器。它从命令行运行,用 PHP 编写(甚至可以检测子模块的变化)。
https://github.com/banago/PHPloy
git commit ...
phploy -s staging
phploy -s production
完成!
(免责声明:在使用了一段时间后,我现在贡献了一些代码补丁和改进,使其与 Windows 兼容。)
【讨论】:
如果您更喜欢 GUI,请使用 SourceTree,您可以轻松设置使用上述 git-ftp 的自定义操作。 Push a Git repository to an FTP的设置(Mac)简要说明
【讨论】:
【讨论】:
如果您使用的是 Mac 并且有 Transmit,我建议您使用以下 git-tranmit 脚本 (https://gist.github.com/379750)。它使用 DockSend 仅发送最后更新的文件。如果您不熟悉 DockSend,请查看http://www.panic.com/blog/2010/11/15-secrets-of-transmit/。
设置:
【讨论】:
这是一个 PHP 脚本,几乎可以自动将 git-diff 上传到 FTP 服务器:
【讨论】:
这里有一个 Ruby 脚本 - Ruby git-deploy via FTP or SSH,它仅通过 FTP 或 SSH 上传 git repo 中更改的文件。
正如另一个答案中提到的,这里是 Python git-ftp.py script,它做了类似的事情。
这里是git-ftp的shell脚本版本。
还有一个名为 git-deploy 的 Ruby gem 项目,它允许您使用 git push 命令通过 git 远程设置自定义部署,其方式与 Heroku 和 Azure 服务相同。对于这个,您可能需要编写自定义方法以通过 FTP 进行部署,我认为它假定您具有对生产服务器的 SSH 访问权限。
【讨论】:
将其添加为远程,然后您可以推送到它,但是仅仅推送代码是不够的,它需要与工作树合并。最简单的方法是反过来,在服务器上有一个工作树,然后获取并合并到其中。
【讨论】:
如果您要将代码投入生产,我建议使用“安装程序”(例如 RPM 包)来安装您的代码。这样,它将被标记版本,您将能够利用安装程序包来支持对生产代码的更新。 Git 并不是真正为支持生产安装而设计的,它旨在跟踪代码本身的更改。
无论如何,只要构建了 .RPM(或 EXE 或其他),您就可以将其 FTP 到生产系统并像安装任何其他软件包一样安装它。
【讨论】: