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以便单独获取或推送?
答案 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}
的用法:
查看自上次推送以来您添加到当前分支的提交内容:
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中立即获取的内容。如果您尝试从一个地方(例如您的上游)获取并推送到另一个地方(例如您的发布存储库),请使用两个单独的遥控器。