我想知道是否有一种简单的方法可以将GIT存储库推向生产(在FTP服务器上)? 感谢
答案 0 :(得分:157)
最近添加到Git wiki的一些工具:
RenéMoser的git-ftp很简单 用于执行FTP Git的shell脚本 办法。使用git-ftp.sh只上传 Git跟踪文件到FTP服务器, 自上次以来发生了变化 上传。这节省了时间和带宽。 即使你玩不同 分支,git-ftp.sh知道哪些文件 是不同的。没有普通的FTP客户端 可以做到这一点。
爱德华Z.Yang是git-ftp 用python编写的简单脚本 在Git存储库中上传文件 通过FTP,只传输新文件 并删除旧文件。
答案 1 :(得分:14)
如果您更喜欢GUI,请使用SourceTree,您可以轻松设置使用上述git-ftp的自定义操作。关于Push a Git repository to an FTP
的设置(适用于Mac)的简要说明
答案 2 :(得分:11)
我发现 PHPloy 是一个很棒的工具,可以通过FTP将Git提交发送到远程服务器。它在命令行中运行,用PHP编写(甚至可以检测子模块的变化)。
<强> https://github.com/banago/PHPloy 强>
git commit ...
phploy -s staging
phploy -s production
完成!
(免责声明:使用它一段时间后,我现在提供了一些代码补丁和改进,使其与Windows兼容。)
答案 3 :(得分:10)
如果你在Mac上并且有传输,我建议使用以下git-tranmit脚本(https://gist.github.com/379750)。它使用DockSend仅发送最后更新的文件。如果您不熟悉DockSend,请查看http://www.panic.com/blog/2010/11/15-secrets-of-transmit/。
设置:
答案 4 :(得分:5)
严格来说,这不是git的用途。但是,如果您的来源不需要编译或处理,比如一个包含完全的html和javascript文件等的网站,您可以在您的网络服务器上复制一个repo并使用来自服务器的git pull
以使其保持最新状态。注意,我会配置你的web服务器来隐藏git目录等。这只是安全问题的开始。
答案 5 :(得分:3)
这是一个PHP脚本,几乎可以自动将git-diff上传到FTP服务器:
答案 6 :(得分:2)
您可以尝试FTPloy ...
“将更改推送到GitHub或Bitbucket。”
“自动将更改部署到您的服务器”
你有一个免费项目可以试用。我目前正在使用一个小型的PHP网站,它运作良好。网站上有一些漏洞,但它是一个活跃的项目,所以至少他们正在努力。
答案 7 :(得分:2)
免费开展一个项目,效果非常好。
答案 8 :(得分:1)
这里有一个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访问权限。
答案 9 :(得分:1)
您可以使用 Deployhq.com ,它的工作原理像一个超级按钮,您唯一需要做的就是设置存储库和FTP帐户。
他们当前使用以下版本控制系统:
Git,Subversion和Mercurial。
托管资源库
答案 10 :(得分:0)
如果要将代码投入生产,我建议使用“安装程序”(如RPM包)来安装代码。这样它将被标记为版本,您将能够利用安装程序包来支持对生产代码的更新。 Git实际上并不是为支持生产安装而设计的,它旨在跟踪代码本身的变化。
无论如何,使用.RPM(或EXE或其他)构建,您只需将其FTP到生产系统并像任何其他软件包一样安装。
答案 11 :(得分:0)
将其添加为远程,然后您可以推送到它,但是仅仅推送代码是不够的,它需要与工作树合并。最简单的方法是反过来,在服务器上有一个工作树,然后获取并合并到那个。
答案 12 :(得分:0)
您始终可以尝试使用http://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem将ftp挂载到本地目录。
然后您可以像this一样使用它。
答案 13 :(得分:0)
我正在努力解决这个问题。我已经找到了一种简单的方法,可以从各种来源(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"
希望这会有所帮助。
答案 14 :(得分:0)
如果您使用的是MacOS,并且喜欢GUI,请查看https://gitftp-deploy.com/。
这是一个不错的小应用程序,它使用Git跟踪更改并仅通过FTP上传更改的文件。
如果您不愿意为带有小团队的数十个小型项目每月支付费用,则特别方便。