Ich habe noch nie über diese Frage nachgedacht und ich habe das Gefühl, dass sie nicht leicht zu beschreiben ist, also habe ich sie nie gestellt.
Zum Beispiel gibt es Projekt A und Projekt B, die überhaupt nichts miteinander zu tun haben.
Projekte A und B verfügen über entfernte Lager und lokale Lager, dargestellt durch remoA, locA, remoB bzw. locB.
Frage:
Unter normalen Umständen ist locA definitiv mit remoA und locB mit remoB verknüpft, unabhängig davon, ob diese Zuordnung durch Klonen oder git remote add (remote) (repoUrl) erfolgt. Gehen Sie nun davon aus, dass die lokalen Bibliotheken locA und locB bereits vorhanden sind, sich locB jedoch in einem neu initialisierten Zustand befindet und immer noch eine leere Bibliothek ist. Aufgrund eines Operationsfehlers wurde git remote add origin (remoAUrl) ausgeführt.
git remote add originB (remoBUrl)
ausgeführt
Wenn Sie git pull ausführen, werden dann die Remote-Branch-Codes von remoA und remoB im lokalen Master-Branch zusammengeführt?
如果你不打算把
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
。结果一样。