这个问题我一直没想明白,而且感觉不太好描述,所以一直没问。
比如存在项目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分支上发生合并吗 ?
如果你不打算把
remoA
关联给locB
,那么到这里就还是错的。正确做法应该是git remote rm origin
然后git remote add origin (remoBUrl)
当然不。首先我觉得说建立了"关联"的关系可能更恰当,类似于
git checkout -b --track xxx
这种感觉。其次,你添加了两个remote
,其中一个叫origin
,另一个叫originB
。但git
会优先使用origin
。详见下一条当然不。除非你先把本地更新成其中一个 branch,然后去
pull
另一个 branch。git pull
不指定后续参数,默认就是git pull origin
。如果你在master
branch 上,默认也就是git pull origin master
。当然,取决于你的设定,有可能会发生变化。以上提到的只是默认情况。实际情况请打开
.git/config
文件看一看。命令行里输入cat .git/config
即可。比如这样:这就告诉了
git
两件事儿:如果你现在在
master
branch 上,那么默认的remote
是origin
如果你在这个情况下执行
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
。结果一样。