Saya tidak pernah terfikir tentang soalan ini, dan saya rasa ia tidak mudah untuk digambarkan, jadi saya tidak pernah bertanya.
Sebagai contoh, terdapat projek A dan projek B, dan ia sama sekali tidak berkaitan.
Projek A dan B mempunyai gudang terpencil dan gudang tempatan, masing-masing diwakili oleh remoA, locA, remoB dan locB.
Soalan:
Dalam keadaan biasa, locA pasti dikaitkan dengan remoA, dan locB dikaitkan dengan remoB, tidak kira sama ada persatuan ini melalui pengklonan atau git remote add (remote) (repoUrl). Sekarang andaikan bahawa perpustakaan tempatan locA dan locB sudah wujud, tetapi locB berada dalam keadaan yang baru dimulakan dan masih merupakan pustaka kosong Kerana ralat operasi, git remote add origin (remoAUrl) telah dilaksanakan.
git remote add originB (remoBUrl)
Jika anda melaksanakan git pull, adakah kod cawangan jauh remoA dan remoB akan digabungkan pada cawangan induk tempatan?
Jika anda tidak bercadang untuk meletakkan
remoA
关联给locB
,那么到这里就还是错的。正确做法应该是git remote rm origin
然后git remote add origin (remoBUrl)
Sudah tentu tidak. Pertama sekali, saya rasa mungkin lebih sesuai untuk mengatakan bahawa hubungan "bersekutu" telah diwujudkan, sama seperti
git checkout -b --track xxx
这种感觉。其次,你添加了两个remote
,其中一个叫origin
,另一个叫originB
。但git
会优先使用origin
. Lihat artikel seterusnya untuk butiranSudah tentu tidak. Melainkan anda mula-mula mengemas kini setempat ke salah satu cawangan, dan kemudian pergi ke
pull
cawangan lain.git pull
不指定后续参数,默认就是git pull origin
。如果你在master
branch 上,默认也就是git pull origin master
.Sudah tentu, ia mungkin berubah bergantung pada tetapan anda. Yang dinyatakan di atas hanyalah syarat lalai. Sila buka
.git/config
文件看一看。命令行里输入cat .git/config
untuk situasi sebenar. Contohnya:Ini memberitahu
git
dua perkara:Jika anda berada di sini sekarang
master
branch 上,那么默认的remote
是origin
Jika anda beraksi dalam situasi ini
git pull
,不带任何参数的那种,那么就相当于git pull origin master
Boleh guna
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
. Hasilnya adalah sama.