這個問題我一直沒想明白,而且感覺不太好描述,所以一直沒問。
例如存在項目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
。結果一樣。