Git:两​​个子目录,如何从不同的分支拉出并推送到一个主分支

时间:2017-07-07 18:33:01

标签: git version-control merge branch git-remote

我已经看到了如何将不同的目录推送到不同的分支,如何从不同的目录中拉出/推送不同的目录等等的答案。但是我在组合这两件事时遇到了问题。

所以我有一个git存储库,比如mydir /,它有两个子目录:

1)MYDIR /包 2.)MYDIR / foo中。

mydir / package是从另一个git repo克隆的,我已经将它设置为从原来的git repo中提取并推送到个人仓库。我主要是在这个回购的开发部门工作。

mydir / foo目录是我编写个人代码的地方。它只拉动并推送到个人仓库。它使用mydir / package中的源代码,这就是我将这些目录保存在一个repo中的原因。

现在的样子:几乎没问题。我移动到mydir / package文件夹,我可以根据需要更新,推送,拉到正确的位置(不是正确的分支,而是正确的存储库)。同样适用于mydir / foo。

出了什么问题:如果我从mydir /推出,那么去看个人回购,有两个分支;掌握和发展

Master:repo有一个文件夹/ foo,很好。但是没有/ package文件夹

开发:repo具有/ package的所有内容。没有/ foo文件夹,没有父目录。

为什么这是一个问题:我已经能够对所有内容使用源代码管理,但让我推送/更改这两个目录很烦人在两个单独的分支上。我必须单独进入每个目录并提交/添加/推送/等,然后每个目录都进入不同的分支。文件已备份,这很好,但对于下一个试图克隆我的回购的人来说,这是不实际的。

我想要什么:除了从mydir /推送之外,几乎关于此回购的所有内容都适用于我。我想从mydir /拉出我的个人仓库(这样我就不会意外更新mydir / package文件夹)。我仍然希望从mydir / package中拉出开发来从原始包的开发分支中拉出来。我只想提交/添加/推送mydir来表示"更新个人repo的主分支现在包含mydir / package和mydir / foo的当前状态。"当我查看这个个人仓库时,我想在主分支上看到两个文件夹。

我尝试了什么 - >发生了什么: 1.)git push remote master(来自mydir / package文件夹)。

错误 ! [拒绝]主人 - >大师(先取) 错误:未能将某些参考文献推送到' mypersonalrepo.git'

2。)拉出个人仓库请求以合并开发和主分支

mydir文件夹然后有mydir / package(它仍然在开发分支上,并进行了所有修改),mydir / foo(在右侧分支上),然后是来自远程repo的所有文件&#39 ; s主分支。

3.。)git add package / - > git push origin master

没有任何改变。这些文件夹仍被推送到个人仓库的独立分支。

作为参考,如果我从mydir / package输入git remote show origin,这就是它的样子,也许我需要创建第二个远程仓库来进行这种自定义?

bill = price + tax + tip

price = raw_input("What is the price of the meal")

tax = price * .06

tip = price * 0.20

1 个答案:

答案 0 :(得分:0)

直接回答是否定的。没有这样的功能可以单独拉出分支并将所有文件夹从分支推送到分支。

  • 如果package文件夹作为foo文件夹的参考或库代码,则应将它们管理到同一分支(例如master)。
  • 如果package文件夹与foo文件夹分开工作,则应将其管理到不同的分支。

为什么不可能当您在package分支中将foo文件夹和master文件夹一起推送时,这意味着这两个文件夹都添加到版本控制中通过master分支中的git。当其他开发人员克隆/拉取您的个人仓库时,package文件夹和foo文件夹将显示在master分支中。即使有其他方法可以在foo分支上为其他开发人员(mastergit fetch)显示git checkout origin/master -- foo文件夹,但工作目录的版本不是{{ 1}}。因此,当开发人员将他们的本地更改推送到您的个人仓库时,git将首先触发它们,origin/masterpackage文件夹最终也将显示在foo分支中。

相关问题