【问题标题】:Git subtree. One common folder in two repositoriesGit 子树。两个存储库中的一个公共文件夹
【发布时间】:2014-03-05 16:54:05
【问题描述】:

我有两个项目,ProjectAProjectB。他们每个人都有自己的 git repo。这些项目有许多相同的文件。这些文件位于 ProjectAProjectB 中名为“common”的文件夹中。以下是文件示例:

项目A

...
cat-folder
dog-folder

common
    commonFile1
    commonFile2

fish-file.php
squirrel-file.txt
...

项目B

...
potato-folder
apple-folder

common
    commonFile1
    commonFile2

tomato-file.xml
pineapple-file.csv
...

我从事这两个项目。我可能会对 ProjectAProjectB 上的常用文件进行更改。我希望在 ProjectA 中对公共文件所做的更改也出现在 ProjectB 的公共文件中(反之亦然)。 因此,我希望两个项目中的“common”文件夹始终是最新的并包含相同的文件。

为此,我使用 git subtree。我创建了第三个仓库“common-repo”,将“common”文件夹的所有文件放在那里,然后删除了“common”文件夹这两个项目。然后在每个项目中我都会这样做:

$ cd /path/to/ProjectA      # or ProjectB
$ git remote add common-repo https://my_user@bitbucket.org/url/of/common-repo
$ git fetch common-repo
$ git subtree add --prefix=common/ common-repo master --squash    # this command adds the "common" folder with my common files to the current project

然后,如果我在 common-repo 中进行更改并推送它们,我可以轻松地将它们拉入 ProjectAProjectB

$ cd /path/to/ProjectA      # or ProjectB
$ git pull -X subtree=common common-repo master      # this pulls changes from common-repo

但是当我更改在 ProjectA(或 ProjectB)中工作的“common”文件夹中的文件并尝试推送它时,就会出现问题到 common-repo

$ cd /path/to/ProjectA      # or ProjectB
$ git subtree push --prefix=common common-repo master     # !!!! 

最后一条命令将ProjectA的所有文件推送到common-repo,包括它的非公共文件!

我如何才能推送到 common-repo 仅“common”文件夹的文件? 或者我做错了什么?

【问题讨论】:

    标签: git git-subtree multiple-repositories


    【解决方案1】:

    而不是使用:

    git pull -X subtree
    

    尝试使用subtree pull 命令。据说它可以与subtree push 和其他subtree 子命令一起工作:

    git subtree pull --prefix=common common-repo master
    

    【讨论】:

    • 命令“git subtree pull --prefix=common common-repo master”也可以。但之后“子树推送”仍在推送整个项目,而不是唯一的“公共”文件夹。
    • 先尝试subtree split 看看正在创建什么,如果有任何问题,它可能有助于排除故障。 subtree push 只是 split 后跟拆分分支的 push 的简写。
    猜你喜欢
    • 2015-04-06
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多