Git 将本地回购推送到远程回购的新子目录

Git 将本地回购推送到远程回购的新子目录,git,Git,我有一个本地git存储库,我创建了这个存储库并使用了几个月。但是,这项工作现在将是一个具有现有存储库的大型项目的一部分,因此我想将大型项目的服务器添加为远程服务器,并将我的工作推送到该存储库的子目录中 然而,我相信这些天真的步骤会将我的本地回购推进到更大项目回购的顶层目录中: $ pwd /home/yotommy/my-local-project $ git remote add origin git://example.com/gitscn/larger-project.git $ git

我有一个本地git存储库,我创建了这个存储库并使用了几个月。但是,这项工作现在将是一个具有现有存储库的大型项目的一部分,因此我想将大型项目的服务器添加为远程服务器,并将我的工作推送到该存储库的子目录中

然而,我相信这些天真的步骤会将我的本地回购推进到更大项目回购的顶层目录中:

$ pwd
/home/yotommy/my-local-project
$ git remote add origin git://example.com/gitscn/larger-project.git
$ git push origin master ### goes to top-level directory, not desired!
我尝试指定一个子目录(尚未存在):

$ git remote add origin git://example.com/gitscm/larger-project.git/my/sub/dir
$ git push origin master
fatal: '/gitscm/larger-project.git/my/sub/dir' does not appear to be a git repository

我是否应该首先将子目录添加到较大的项目回购中?还是有更好的方法?

我发现,遵循@twalberg的指导。以下是问题中提出的案例的简明配方

$ git clone git://example.com/gitscm/larger-project.git
$ git remote add subproj_remote /home/yotommy/my-local-project
$ git fetch subproj_remote
warning: no common commits
remote: Counting objects: 461, done.
remote: Compressing objects: 100% (332/332), done.
remote: Total 461 (delta 157), reused 0 (delta 0)
Receiving objects: 100% (461/461), 272.89 KiB, done.
Resolving deltas: 100% (157/157), done.
From subproj_remote /home/yotommy/my-local-project
 * [new branch]      master     -> subproj_remote/master
$ git checkout -b subproj_branch subproj_remote/master
Branch subproj_branch set up to track remote branch master from subproj_remote.
Switched to a new branch 'subproj_branch'
$ git checkout master
Switched to branch 'master'
$ git read-tree --prefix=subproj/ -u subproj_branch
$ git commit -m "merged subproj"

签出git子模块。您想做的事情,实际上是不可能的(并且在版本控制逻辑中没有意义)。我的目标是将我的代码及其所有历史记录集成到更大项目的存储库中。这是一个毫无意义的目标,还是我实现目标的方法?@SimonBoudrias事实上,他想要的是完全可能的(我已经做了好几次),但这并不简单或直观,至少有两种不同的主要方法——一种是使用
git子树
,另一种是使用
git merge-s子树
,这两个都是非常简单的谷歌搜索——以及使用
git read tree
和其他管道命令的低级搜索。啊,也许我没有正确理解@yotommy,合并后,你不希望继续在回购协议中工作,你总是从更大的项目中工作?没错,@SimonBoudrias,我认为这是从我的本地回购协议转移到更大项目的子项目。我有点困惑。在子项目获得新提交的情况下,如何将更新推送到较大的项目分支?nm。。在您提供的链接中找到答案:
git merge-s子树