将Git推送到生产环境(FTP)

133

我想知道是否有一种简便的方法将GIT存储库推送到生产环境(FTP服务器上)?谢谢。

15个回答

163
最近在Git维基中添加了一些工具:

git-ftp 是由René Moser开发的一个简单的shell脚本,用于以Git方式进行FTP。使用 git-ftp.sh 仅将自上次上传以来更改的Git跟踪文件上传到FTP服务器,这可以节省时间和带宽。即使您使用不同的分支,git-ftp.sh也知道哪些文件是不同的。没有普通的FTP客户端能做到这一点。

git-ftp 是由Edward Z. Yang编写的一个简单的Python脚本,通过FTP上传Git存储库中的文件,仅传输新文件并删除旧文件。


3
使用git-ftp,有没有办法仅将一个子目录(例如html5 boilerplate的发布文件夹)推送到指定的FTP目录? - gang
如果团队中有几个开发人员,那该怎么办呢?是否仍然可以使用这些脚本? - Shmygol
@Trilliput:可能有点晚了,但是确实可以在网络上使用一个中间服务器/虚拟机作为每个人推送的地方,然后使用 https://github.com/ezyang/git-ftp#using-a-bare-repository-as-a-proxy。 - Pranav 웃
https://github.com/banago/PHPloy 也可以做类似的事情,但它可以处理子模块,而我怀疑其他提到的工具可能会遇到问题。 - Simon East
使用git-ftp(不确定是脚本还是Python)的主要问题是在上传大量文件和长文件列表时非常糟糕。 - indianwebdevil

14

如果您喜欢图形界面,可以使用SourceTree,您可以轻松设置一个自定义操作,使用上面提到的git-ftp。有关设置的简要说明(适用于Mac)请参见将Git存储库推送到FTP

输入图像描述


@Julix 关于提到的文章。 - Geri Borbás

12

我发现PHPloy是一个非常好用的工具,可以通过FTP将Git提交发送到远程服务器。它可以在命令行中使用,并且是用PHP编写的(甚至可以检测子模块中的更改)。

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

完成了!

(免责声明:使用一段时间后,我现在已经贡献了一些代码补丁和改进,使其兼容Windows。)


10
如果您使用的是Mac并且安装了Transmit,我建议使用以下git-transmit脚本(https://gist.github.com/379750)。它使用DockSend仅发送最近更新的文件。如果您不熟悉DockSend,请查看http://www.panic.com/blog/2010/11/15-secrets-of-transmit/设置:
  1. 将git-transit复制到/usr/sbin/中。
  2. 进入/usr/sbin目录
  3. 对git-transmit进行chmod +x操作。
  4. 为您的实时应用程序设置Drop Send。
  5. 在您的git存储库中运行git-transmit。

1
这个脚本在选择“最后更新文件”方面相当笨拙。看看这个分支以获取更优雅的解决方案。 - quickshiftin
除此之外,您可能只想传输已跟踪但未提交的文件。以下是一个可以实现这一点的小脚本:https://gist.github.com/borisdiakur/37b8f512f6f8865b79c7 - borisdiakur

5

严格来说,这不是git的用途。但是,如果你的源代码不需要编译或处理,比如一个完全由html和javascript文件组成的网站,你可以在你的web服务器上克隆repo,并使用git pull命令从服务器更新它。请注意,我会配置你的web服务器隐藏git目录等内容。这只是安全问题的开始。

如果你需要编译或处理,你应该开始查看Ant, Maven, BuildR, SBT等工具。


29
唯一的问题是当你无法访问生产服务器时,比如只有FTP访问权限的简单共享主机。 - dodgy_coder

5
您可以使用 Deployhq.com,它非常好用,您需要做的唯一事情是设置您的代码库和FTP帐户。
它目前支持以下版本控制系统: Git、Subversion、Mercurial。 代码库托管在以下平台:
  • GitHub
  • Bitbucket
  • GitLab
  • Codebase

enter image description here


4

2

1

这里有一个 Ruby 脚本 - Ruby git-deploy via FTP or SSH,它通过 FTP 或 SSH 仅上传 Git 存储库中更改的文件。

正如另一个答案中提到的那样,这里是Python git-ftp.py script,它也可以做类似的事情。

这里还有 git-ftp 的 shell 脚本版本。

还有一个名为 git-deploy 的 Ruby gem 项目,它允许您使用 git push 命令设置自定义部署,就像 Heroku 和 Azure 服务一样。对于这个,您可能需要编写自定义方法以通过 FTP 进行部署,并且我认为它假定您可以访问生产服务器的 SSH。


0

如果你使用 MacOS 并且喜欢 GUI,可以看看 https://gitftp-deploy.com/

这是一个不错的小应用程序,它使用 Git 跟踪更改,并通过 FTP 仅上传更改的文件。

特别适用于不想为许多小型团队项目支付每月费用的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接