Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git:两个子目录,如何从不同的分支拉入并推送到一个主分支_Git_Version Control_Merge_Branch_Git Remote - Fatal编程技术网

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

Git:两个子目录,如何从不同的分支拉入并推送到一个主分支,git,version-control,merge,branch,git-remote,Git,Version Control,Merge,Branch,Git Remote,我已经看到了关于如何将不同的目录推送到不同的分支机构,如何从不同的repo中为不同的目录拉/推,等等的答案,但是我在结合这两件事时遇到了一个问题 所以我在中有一个git存储库,比如mydir/,它有两个子目录: 1.)mydir/包装 2)mydir/foo mydir/包是从另一个git repo克隆而来的,我对它进行了设置,以便它从原始git repo中提取并推送到个人的git repo。我主要在回购协议的开发部门工作 mydir/foo目录是我编写个人代码的地方。它只能拉和推个人回购。它使

我已经看到了关于如何将不同的目录推送到不同的分支机构,如何从不同的repo中为不同的目录拉/推,等等的答案,但是我在结合这两件事时遇到了一个问题

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

1.)mydir/包装 2)mydir/foo

mydir/包是从另一个git repo克隆而来的,我对它进行了设置,以便它从原始git repo中提取并推送到个人的git repo。我主要在回购协议的开发部门工作

mydir/foo目录是我编写个人代码的地方。它只能拉和推个人回购。它使用mydir/package中的源代码,这就是为什么我将这些目录保存在一个repo中

现在的样子:差不多好了。我移动到mydir/package文件夹,我可以根据需要更新、推送、拉送到正确的位置(不是正确的分支,而是正确的存储库)。mydir/foo也是如此

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

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

开发:回购协议包含/包的所有内容。没有/foo文件夹,没有父目录

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

我想要什么:除了mydir/的推动之外,这项回购协议的几乎所有内容都对我有效。我希望从mydir/中提取以从我的个人回购中提取(这样我就不会意外地更新mydir/package文件夹)。我仍然希望从mydir/package中提取develope,以从原始包的develope分支中提取。我只想从mydir提交/添加/推送,意思是“更新个人回购的主分支,现在包含mydir/package和mydir/foo的当前状态。”当我查看此个人回购时,我想查看主分支上的两个文件夹

我尝试了什么->发生了什么: 1.)git推送远程主机(从mydir/package文件夹)

错误 ! [已拒绝]主控->主控(先取) 错误:无法将某些引用推送到“mypersonalrepo.git”

2.)拉式个人回购请求合并开发和主分支机构

mydir文件夹中有mydir/package(它仍然在develope分支上,并且有我所有的修改)、mydir/foo(在右侧分支上),然后是远程repo主分支中的所有文件

3.)git add package/->git push原始主机

没有什么变化。这些文件夹仍然被推到个人回购协议的各个分支机构

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

remote origin
Fetch URL: their_package_repo.git
Push  URL: mypersonal_repo.git
HEAD branch: master
Remote branches:
develop                         tracked
master                          tracked
some_other_branch               tracked
Local branches configured for 'git pull':
  develop merges with remote develop
  master  merges with remote master
Local refs configured for 'git push':
  develop pushes to develop (fast-forwardable)
  master  pushes to master  (local out of date)

直接的答案是否定的。没有这样的功能来单独拉分支并将所有文件夹从分支推送到一个分支

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

不可能的原因:当您在
master
分支中将
package
文件夹和
foo
文件夹推到一起时,这意味着这两个文件夹都由git在
master
分支中添加到版本控制中。当其他开发人员克隆/拉取您的个人回购时,
package
文件夹和
foo
文件夹将显示在
master
分支中。即使有其他方法可以为其他开发人员在
master
分支上仅显示
foo
文件夹(
git fetch
git checkout origin/master--foo
),但工作目录不是
origin/master
版本。因此,当开发者将他们的本地更改推送到你的个人回购协议时,git会先点击他们,让他们退出,而
foo
文件夹最终也会显示在
master
分支中。

直接回答是否。没有这样的功能来分别拉分支并将所有文件夹从分支推送到分支

  • 如果
    文件夹用作
    foo
    文件夹的参考或库代码,则应将其管理到同一分支中(例如
  • 如果
    package
    文件夹与
    foo
    文件夹分开工作,您应该将它们管理到不同的分支中
不可能的原因:当您在
master
分支中将
package
文件夹和
foo
文件夹推到一起时,这意味着这两个文件夹都由git在
master
分支中添加到版本控制中。当其他开发人员克隆/拉取您的个人回购时,
package
文件夹和
foo
文件夹将显示在
master
分支中。即使有其他方法可以为其他开发人员在
master
分支上仅显示
foo
文件夹(
git fetch
git checkout origin/master--foo
),但工作目录不是
origin/master
版本。因此,当开发人员将其本地更改推送到您的个人回购协议时,git将首先点击他们,然后
foo
文件夹也将显示在
master