所有分支的不同默认推拉式遥控器

时间:2016-08-21 19:06:12

标签: git

对于我本地存储库中的所有现有分支以及我在本地存储库中创建的新分支,默认情况下应该从origin远程执行拉取,并且默认情况下应该推送到timakro远程。

2 个答案:

答案 0 :(得分:1)

使用remote set-url

  

set-url

     

更改遥控器的网址。设置远程<name>的第一个URL   匹配正则表达式<oldurl>(如果没有给出第一个URL)   <newurl>。如果<oldurl>与任何网址不匹配,则会发生错误   什么都没有改变。

     

使用--push,操纵推送网址而不是提取网址。

     

使用--add,不会更改现有网址,而是添加新网址。

     

使用--delete,而不是更改现有网址,所有网址都匹配   为远程删除正则表达式。试图删除所有   非推送网址是一个错误。

     

请注意推送网址和提取网址,即使可以设置它们   不同的是,必须仍然指向同一个地方。你推到了什么   推送URL应该是您立即获取的内容   来自获取URL。如果您尝试从一个地方取货(例如   您的上游)并推送到另一个(例如您的发布存储库),   使用两个单独的遥控器。

所以,基本上:

git remote set-url origin <origin-repo>
git remote set-url --push origin <your-own-repo>

答案 1 :(得分:1)

git中创建新分支时,它没有&#34;默认远程&#34;直到您指定一个(使用,例如git push --set-upstreamgit branch --set-upstream-to)。

远程可以有不同的推送提取网址,因此您可以执行以下操作:

git remote add myremote https://gitserver/for/origin
git remote set-url --push myremote https://otherserver/for/timakro

现在,如果您创建一个新分支:

git checkout -b my_feature_branch

设置上游:

git branch --set-upstream-to myremote

此分支上的git pull将从第一个网址拉出,git push将推送到第二个网址。

您可以通过使用简单的shell脚本迭代本地分支并运行git branch --set-upstream-to,对存储库中的所有现有分支进行相同的更改。也许是这样的:

git for-each-ref refs/heads/ |
  awk -F'\t' '{print $2}' |
  xargs -n1 git branch --set-upstream-to myremote