Git - 如何将本地仓库提交到另一个本地仓库的子文件夹?

5
我有一个Django项目,之前我将其托管在bitbucket上。现在我需要将其托管在openshift上,他们提供了一个git存储库,每次推送都会自动部署。问题是,存储库中有几个顶级文件夹用于配置和设置,而有效的Django项目必须位于名为wsig/openshift的子文件夹中。
我的问题是,如何将本地Django存储库中的更改提交到本地openshift存储库的wsig/openshift子文件夹中?因为我打算继续在bitbucket/local存储库上进行开发。
2个回答

3
你可能正在寻找子模块。文档中提到:

子模块允许在源树的专用子目录中嵌入外部存储库,总是指向特定提交。

因此,通过运行以下命令,你可以将bitbucket存储库作为单独的存储库嵌入到openshift存储库的子文件夹中:

git submodule add path_to_bitbucket folder/in/openshift

在OpenShift仓库中。

您需要定期运行git submodule update才能保持OpenShift最新状态,但您可能已经预料到需要这样额外的工作。


我接受了你的答案,因为我更深入地研究了子模块,并有几个地方推荐使用子树代替,我发现一个有用的链接是http://help.github.com/articles/about-git-subtree-merges。 - ibrabeicker
@ibrabeicker,子树也可以使用,基本上的区别在于使用子树时需要注意提交的内容,而使用子模块时需要记得在推送之前先更新。我选择了子模块,因为你似乎想要将存储库放在不同的文件夹中,并且只想要推送到Openshift以进行部署。如果您想要在Openshift存储库子文件夹中工作,则子树会更容易一些。 - Trudbert

0

我也曾遇到完全相同的问题!这真是令人烦恼,但我选择了其他方式

为什么不从头开始创建一个 Python 2.7 项目呢?当前 Django 的结构真的很烦人。我的做法是:

  1. 创建一个 OpenShift 项目,该项目使用了那个烦人的结构。
  2. 拷贝 settings.py 和 wsgi.py 并在本地文件系统中保留一份副本(而不是在 OpenShift 中)。
  3. 放弃该项目,并启动一个裸的 Python 2.7 项目。
  4. 将其检出到我的本地文件系统中,在本地文件系统中创建一个 Django 项目
  5. 相应地更改 wsgi 和 settings 的内容(适应任何可能错位的路径-比看起来容易得多)。
  6. 提交/推送(这个新结构)。

在点4中,您将采取不同的做法:您还将在 OpenShift 分支上合并该远程分支(Bitbucket),按照点5中的要求相应地更改这些文件,并推送 OpenShift 分支。

这样,您就拥有了一个全新的项目,与您的结构相匹配(也许您想在环境中配置两个远程分支:OpenShift 和 Bitbucket)。

这就是我做的方式,老实说,我没有什么可后悔的。

离题了,但或许对你使用Django有用:如果你想要同时使用(gunicorn|uwsgi)+nginx(使用自定义的购物车,该购物车不提供apache而是nginx和python),那么这一点尤为重要,因此不能使用默认的Django购物车。


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