如何更改工作站(本地)repo推送信息的远程(托管)仓库?

时间:2016-10-21 07:51:03

标签: git github gitlab

我从GitHub分叉了一个项目。

从我的工作站,我希望能够推送到我的Gitlab,即

git push

到目前为止,这是我在工作站上获得的内容:

$ git remote -v
origin  https://github.com/OWASP/railsgoat.git (fetch)
origin  https://github.com/OWASP/railsgoat.git (push) 

我认为,为了我的目的,它会取而代之的是成功:

$ git remote -v
origin  https://github.com/OWASP/railsgoat.git (fetch)
origin  https://gitlab.com/myName/railsgoat.git (push)

我确实尝试过查看文档,但是解决方案却躲避了我:

git remote set-url [--push] <name> <newurl> [<oldurl>]
git remote set-url --add [--push] <name> <newurl>
git remote set-url --delete [--push] <name> <url>

2 个答案:

答案 0 :(得分:3)

事实上,为同一个遥控器提供单独的提取和推送URL是相当尴尬的(你可以做到,但这不是达到你所要求的典型方式)。通常,您需要添加另一个遥控器,然后推送到该遥控器。

git remote set-url origin https://gitlab.com/myName/railsgoat.git
git remote add upstream https://github.com/OWASP/railsgoat.git

然后你将使用

git fetch upstream

从上游回购和

获取更改
git push origin

推到你的前叉。

名称upstreamorigin并非一成不变,尽管这些是社区使用的典型名称。您可以将upstream命名为其他内容,它只是一个标识符。 origin是您最初克隆的远程名称。

惯例是将origin用于您控制的内容(您的分叉),将upstream用于您无法控制的内容(中央回购)。

然后,下一个概念是给定分支的“上游分支”(命名令人困惑)。

基本上,git push需要知道你要从哪个分支推送到(git在这种情况下过于灵活,在开始时可能会令人生畏)。

假设您要从master推送到origin/master,并且您希望将来git push中的master做同样的事情,你会做:

git push -u origin master

-u--set-upstream的简写,稍后您可以通过--set-upstream-to进行编辑,这使得git记住您现在推送的分支是要使用的默认分支在将来)。

完成后,您可以在将来使用

git push

还有一点需要注意,如果由于某种原因你仍在使用git 1.x,建议执行此操作

git config --global push.default simple

更改git push所做的行为(了解更多here

要做你要求的确切事情,你要做

git remote set-url --push origin https://gitlab.com/myName/railsgoat.git

答案 1 :(得分:1)

您应该使用

添加新的远程主机
git remote add newHostName  https://gitlab.com/myName/railsgoat.git 

然后

git push newHostName branchname