我需要将我的本地存储库复制到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
我是以错误的方式做的吗?有人可以指导我以书面方式去做吗?
答案 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
应解决