Git推入生产(FTP)

时间:2010-06-01 13:25:57

标签: git ftp push

我想知道是否有一种简单的方法可以将GIT存储库推向生产(在FTP服务器上)? 感谢

15 个答案:

答案 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)的简要说明

enter image description here

答案 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/

设置:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-transmit
  4. 您的实时应用的设置下拉发送
  5. 在您的git存储库中运行git-transmit。

答案 4 :(得分:5)

严格来说,这不是git的用途。但是,如果您的来源不需要编译或处理,比如一个包含完全的html和javascript文件等的网站,您可以在您的网络服务器上复制一个repo并使用来自服务器的git pull以使其保持最新状态。注意,我会配置你的web服务器来隐藏git目录等。这只是安全问题的开始。

如果您有任何类型的编译或处理,您应该开始关注AntMavenBuildRSBT等。

答案 5 :(得分:3)

这是一个PHP脚本,几乎可以自动将git-diff上传到FTP服务器:

http://code.google.com/p/upload-git-diff-with-ftp/

答案 6 :(得分:2)

您可以尝试FTPloy ...

https://ftploy.com

  

“将更改推送到GitHub或Bitbucket。”

     

“自动将更改部署到您的服务器”

你有一个免费项目可以试用。我目前正在使用一个小型的PHP网站,它运作良好。网站上有一些漏洞,但它是一个活跃的项目,所以至少他们正在努力。

答案 7 :(得分:2)

https://www.deployhq.com/

免费开展一个项目,效果非常好。

答案 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。

托管资源库

  • GitHub
  • Bitbucket
  • GitLab
  • 代码库

enter image description here

答案 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-ftpINSTALLgit-ftpUPLOADgit-ftpIssuegit-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上传更改的文件。

如果您不愿意为带有小团队的数十个小型项目每月支付费用,则特别方便。