将本地存储库合并到远程存储库

时间:2014-09-16 14:53:16

标签: git github gitlab

我需要将我的本地存储库复制到github中的私有存储库。

现在我的代码库已经在我自己的gitlab服务器中,客户端要求我将我的代码合并到他的存储库,方法是将他的存储库添加到我的gitlab repo远程。我不知道如何实现这一目标。我可以按照以下步骤操作,但无法推送我的代码。

 cd my-code
 git remote add client 
 git push origin client
 error: src refspec ben does not match any.
 error: failed to push some refs to 

我是以错误的方式做的吗?有人可以指导我以书面方式去做吗?

3 个答案:

答案 0 :(得分:2)

这两个历史都不相关,所以,基本的git命令这次无法帮助你

例如,您的repo具有此历史记录(这是仅用于显示概念的简化版本):

A - B - C< - master

你试图推送的回购(客户)有这个:

S - T - U - V - X - Y - Z< - master

如果你尝试将你的回购的git推送到客户端,那么它将被拒绝,因为Z不是C的祖先,即使Z,无论如何都与C无关

如果你强行推(不要那样),你将覆盖客户回购的所有信息,因此,不要那样 < / p>

如果您不介意丢失所有历史记录,可以将文件复制到客户端存储库的本地克隆,并且只执行一次“将所有文件添加到repo”,但是如果您需要将历史记录保存在客户端存储库中出于某种原因,这就是我要做的事情:

重新启动客户端/主分支上的所有更改,但在此之前,您需要检查客户端仓库是否可以将目录结构合并到他们的目录中,或者是否需要将代码推送到子目录(第一种情况) ,跳到第1步,第二种情况继续步骤0)

步骤0)将文件移至子目录

git filter-branch --tree-filter 'mkdir anothernewdir; mv *.* anothernewdir/'

注意:如果需要撤消filter-branch操作,可以使用git reset:

git reset --hard master@{1}

步骤1)重新启动客户分支

git rebase client/master

步骤2)使用-u标志推送您的更改(无需强制推送)(以跟踪上游)

git push -u client master:refs/heads/master

答案 1 :(得分:1)

push命令的模式如下:

git push <remotename> <branchname>

因此,如果您使用远程名称客户端(通过执行“git remote add client”)从客户端添加存储库,则push命令应如下所示:

git push client <branchname>

对于&lt; branchname&gt;你应该插入你想要推送的分支(可能是你的功能或开发分支)。

答案 2 :(得分:-3)

推送之前的git pull client应解决