git remote add (remote) (repoUrl)用于不相关的两个库
伊谢尔伦
伊谢尔伦 2017-06-29 10:08:59
0
1
1071

这个问题我一直没想明白,而且感觉不太好描述,所以一直没问。
比如存在项目A,项目B,两者毫不相干。
项目A,B都有远程仓库和本地仓库,分别用remoA,locA,remoB,locB表示。

问题:
正常情况下,肯定是locA关联到remoA,locB关联到remoB,不管这种关联是通过克隆还是 git remote add (remote) (repoUrl)。现在假设本地库locA,locB都已经存在,但locB处于刚刚初始化的状态,还是一个空库,因为操作错误,执行了
git remote add origin (remoAUrl)。

之后发现了这个错误,又执行了
git remote add originB (remoBUrl)

那么此时remoA/master和remoB/master是否都映射到了locB/master上?
如果执行git pull 会使得remoA和remoB的远程分支代码在本地的master分支上发生合并吗 ?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复 (1)
phpcn_u1582

因为操作错误,执行了git remote add origin (remoAUrl)。之后发现了这个错误,又执行了git remote add originB (remoBUrl)

如果你不打算把remoA关联给locB,那么到这里就还是错的。正确做法应该是git remote rm origin然后git remote add origin (remoBUrl)

那么此时remoA/master和remoB/master是否都映射到了locB/master上?

当然不。首先我觉得说建立了"关联"的关系可能更恰当,类似于git checkout -b --track xxx这种感觉。其次,你添加了两个remote,其中一个叫origin,另一个叫originB。但git会优先使用origin。详见下一条

如果执行git pull 会使得remoA和remoB的远程分支代码在本地的master分支上发生合并吗

当然不。除非你先把本地更新成其中一个 branch,然后去pull另一个 branch。

git pull不指定后续参数,默认就是git pull origin。如果你在masterbranch 上,默认也就是git pull origin master

当然,取决于你的设定,有可能会发生变化。以上提到的只是默认情况。实际情况请打开.git/config文件看一看。命令行里输入cat .git/config即可。比如这样:

[branch "master"] remote = origin merge = refs/heads/master

这就告诉了git两件事儿:

  1. 如果你现在在masterbranch 上,那么默认的remoteorigin

  2. 如果你在这个情况下执行git pull,不带任何参数的那种,那么就相当于git pull origin master

你可以用git push -u newOrigin newBranch来改,那现在git pull就相当于git pull newOrigin newBranch了。
类似地,也可以git config branch.master.remote newOrigin然后git config branch.master.merge refs/heads/newBranch。结果一样。

    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!