我从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>
答案 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
推到你的前叉。
名称upstream
和origin
并非一成不变,尽管这些是社区使用的典型名称。您可以将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