1

我正在尝试为我正在从事的个人项目设置一个 Git 存储库,该项目将使用 Opencart 软件作为基础。Opencart 项目托管在 Github 的 github.com/Opencart/Opencart 上,因此显然它使用 Git 作为版本控制工具。

我想将 Opencart 项目作为远程仓库(上游),并将上游仓库的主分支保留在我的本地仓库中,以将未来的提交合并到我的工作副本中。我遇到的主要问题是 Opencart/Opencart Repo 已设置,因此所有源文件都保存在一个名为“upload”的目录中,但我想将所有文件保存在 repo 目录中,这样我就可以将我的存储库部署到我的 Web 服务器的根 (public_html) 目录。如果我将我的 Repo 设置为在 repo 根目录中包含所有文件,当我尝试合并来自上游 repo 的提交时,它基本上会复制所有文件,除了 repo 内名为“upload”的目录中的文件。

有没有办法设置/配置我的 repo,以便我的所有文件都可以位于 repo 根目录中,并让 upstream-master 分支将文件保留在“upload”目录中,但让 git 认为这两个目录相同?这样我就可以将来自上游 master 的提交合并到我的 Repo 中,以便将来进行更改/修复/改进,而无需 Git 认为有两组文件?

4

1 回答 1

0

从广义上讲,。Git 不允许您拥有具有不同目录结构的同一存储库的两个不同视图。

解决方案 1:完全忽略 git 进行上传

也就是说,我认为无论如何你都不需要这个。如果您的虚拟主机提供public_html,为什么不只是scp将您想要的文件放到您想要的位置?

您可以在 Makefile/Rakefile/whatever 中将此作为任务,然后在要上传时从本地计算机运行它,例如,makefile 任务可能如下所示:

upload:
  scp -r ./upload/* me@myhost:/home/me/public_html/

.PHONY: upload

解决方案 2:链接到您的虚拟主机上的 git 目录

无需手动上传文件,只需将 public_html 目录链接到服务器上 git 存储库中的上传目录即可。例如:

➤ pwd
/home/me/
➤ find ./
./my_repo.git/
./my_repo.git/upload/
[...]
➤ ln -s ./my_repo.git/upload ./public_html
于 2013-06-25T09:02:00.570 回答