获取和推送的远程URL是否会有所不同?

时间:2015-07-31 13:13:48

标签: git git-remote

git remote --v show remote info

origin  https://github.com/test/testing-iOS.git (fetch)
origin  https://github.com/test/testing-iOS.git (push)

它表明fetch和push都使用相同的远程URL。

问题:

fetch和push的远程URL(如果有的话)何时会有所不同?

您可以使用哪些命令来更改远程URL以便单独获取或推送?

2 个答案:

答案 0 :(得分:17)

是(使用不同的遥控器),这就是为什么Git 2.5引入了新的参考速记@{push}
请参阅“Viewing Unpushed Git Commits

  

您可以使用哪些命令来更改远程URL以便单独获取或推送?

您需要一个单独的遥控器:

git remote add myfork /url/for/my/fork
git config remote.pushdefault myfork

GitHub博客文章“Improved support for triangular workflows”说明了@{push}的用法:

https://cloud.githubusercontent.com/assets/1319791/8943755/5dcdcae4-354a-11e5-9f82-915914fad4f7.png

  

查看自上次推送以来您添加到当前分支的提交内容:

git clone https://github.com/YOUR-USERNAME/atom
cd atom
git config remote.pushdefault origin
git config push.default current
  • remote.pushdefault 指定推送 (到哪个远程仓库)。
  • push.default 指定 要推送什么 (什么是refspec),当没有明确给出refspec时。
    current,在后一种情况下,意味着“推送当前分支以更新接收端具有相同名称的分支”。

以下分支将从一个网址获取,推送到另一个网址:

git remote add upstream https://github.com/atom/atom
git fetch upstream
git checkout -b whizbang upstream/master

(此处whizbang分支跟踪upstream/master,但推送到origin/whizbang

git log @{push}..
  

这使用新的@{push}表示法,它表示当前分支将被git push推送到的远程跟踪分支的当前值,即origin/whizbang。   您还可以使用符号whizbang@{push}来引用任意分支的推送目标。

答案 1 :(得分:9)

从文档中,Fetch和Push URL应该相同。

http://git-scm.com/docs/git-remote

设置推送和获取网址的命令

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

请注意,推送网址和提取网址即使可以设置不同,仍必须引用相同的位置。您推送到推送URL的内容应该是您从提取URL中立即获取的内容。如果您尝试从一个地方(例如您的上游)获取并推送到另一个地方(例如您的发布存储库),请使用两个单独的遥控器。