我有一个来自外部存储库的文件夹(我们称之为ExRepo),我没有任何推送权限。
如何获取ExRepo并将其合并到MyOwnRepo中?
我试过这个:
C:/Users/<User>/MyOwnRepo>git checkout -b ExRepo
C:/Users/<User>/MyOwnRepo>git clone git@ExRepo.git
C:/Users/<User>/MyOwnRepo>git remote add -f ExRepo git@MyOwnRepo.git
C:/Users/<User>/MyOwnRepo>git push
这实际上并没有改变任何东西。很可能是因为ExRepo是另一个存储库(MyOwnRepo)中的它自己的存储库。那么,我究竟如何将ExRepo中的所有内容都添加到MyOwnRepo中呢?如果我试图将文件夹ExRepo添加到我的远程存储库中,并使用MyOwnRepo的URL,我会收到以下消息:
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> lab3
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached lab3
hint:
hint: See "git help submodule" for more information.
但是,如果我把ExRepo当作一个子模块,我仍然不能编辑它。推入子模块不会给予我一个ExRepo文件夹到MyOwnRepo,只是一个链接到原始的ExRepo,我没有任何权限。所以,这里显然有一些东西我错过了。
1条答案
按热度按时间yrwegjxp1#
你需要做的是有一个连接到两个存储库的沙箱,而不是嵌套沙箱。你可以从任何一个存储库中提取,但只能推送到你有写访问权限的那个。
假设只读存储库是
git@server:exspace/exrepo.git
,读写存储库是git@server:newspace/myownrepo.git
。这个过程应该对你有用。不要在现有的沙箱中运行这个过程,或者如果你已经有一个exrepo的克隆,就跳过克隆部分。现在,要将某个分支
branchname
从exrepo推送到myownremote,可以检查并推送它:如果你想让你的生活更轻松,并有自己的回购作为默认,设置为上游:
在以后的每次推送/拉入/获取操作中,您可以指定要使用哪个远程:
origin
或myownremote
。