【发布时间】:2011-07-05 16:49:13
【问题描述】:
我有 ftp 服务器,但无法在其上安装其他软件。是否可以在其上创建 git 存储库并克隆到本地 PC?我尝试创建本地存储库并将其复制到 ftp。它会起作用吗?如何从 ftp 服务器克隆?
【问题讨论】:
我有 ftp 服务器,但无法在其上安装其他软件。是否可以在其上创建 git 存储库并克隆到本地 PC?我尝试创建本地存储库并将其复制到 ftp。它会起作用吗?如何从 ftp 服务器克隆?
【问题讨论】:
StackOverflow 上还有其他各种问题讨论这个主题,例如:
...可能有适合您的情况的解决方案。
你没有说你使用的是什么操作系统,但如果它是基于 Linux 的,我会尝试使用FUSE + 将 FTP 服务器作为本地文件系统的一部分挂载fuseftp。如果您使用的是 Mac OS,同样可以尝试MacFuse。 (n.b. 我自己从未尝试过 fuseftp,所以我无法推荐或不推荐它。)毫无疑问,Windows 也有等价物。
那么你应该只能够在挂载的目录中运行git init --bare 并从中推送和拉取,因为它是本地存储库。您还应该启用示例 post-update 挂钩,以便在每次推送后运行 git update-server-info - 否则人们在使用 ftp:// 存储库 URL 与服务器交互时会遇到问题。
【讨论】:
如果 Git 在服务器上运行,它将工作。
但根据你的描述,我猜不是。
【讨论】:
是的,它应该可以工作。请参阅this other answer,了解如何操作。
与通过HTTP访问基本相同,只是在URL中使用ftp://协议说明符:
git clone ftp://username:password@ftp.server.net/repos/project.git
注意事项:
您只要求克隆,但如果您还需要将任何内容写回远程仓库(即push,也),那么您在没有安装 FTP 且未经许可在服务器上运行其他软件的情况下不走运。
FTP 访问并非没有注意事项,正如其他 SO 答案(上面链接)或 this post here(关于无法访问的文件,取决于 FTP 服务器/配置)所暗示的那样。
git-clone man page 表示 FTP 传输已“弃用”,出于各种原因应避免使用。那个注释是一个希望只是一个错误,因为
a) 惩罚那些只有 FTP 作为共享 repo 的唯一选择的可怜人,似乎是一个非常不友好的想法。 (其他有其他选择的人无论如何都会更喜欢使用这些。)
b) 似乎与gitremote-helpers man page 不一致,gitremote-helpers man page 也明确提到了 ftp 传输,没有任何反对意见。
c) 每个传输都有其限制/优点,FTP 也不例外。 (通过传输助手的capabilities 命令,工具也可以毫无问题地协商,使用一个,什么不使用。)
希望 git 克隆将继续通过 FTP 工作(也许那个可怕的评论实际上意味着 git 不支持它natively),只要 FTP 仍然是一个实用的替代方案。
【讨论】:
您可以使用git-ftp project 工具将此部署到 ftp 服务器。它易于使用,可以安装在本地服务器上进行远程部署。这是对我来说很好的基本配置:
- git config git-ftp.user YOUR_FTP_USERNAME # ftpuser
- git config git-ftp.password YOUR_FTP_PASSWORD # ftppass
- git config git-ftp.url YOUR_FTP_SERVER # ftp.domain.com, might be a path to subdirectory ftp.domain.com/public_html
- git config git-ftp.syncroot public_html/ # optional if you only want to push a part of your repository
- git ftp init
- git ftp push
【讨论】: