Rumah > Soal Jawab > teks badan
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?
phpcn_u15822017-06-29 10:10:59
Disebabkan ralat operasi,
git remote add origin (remoAUrl)
telah dilaksanakan. Kemudian saya menemui ralat ini dan melaksanakan git remote add originB (remoBUrl)
Jika anda tidak bercadang untuk meletakkan remoA
关联给 locB
,那么到这里就还是错的。正确做法应该是 git remote rm origin
然后 git remote add origin (remoBUrl)
Jadi adakah kedua-dua remoA/master dan remoB/master dipetakan ke locB/master pada masa ini?
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 butiran
Jika anda melaksanakan git pull, adakah kod cawangan jauh remoA dan remoB akan digabungkan pada cawangan induk tempatan?
Sudah 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:
[branch "master"]
remote = origin
merge = refs/heads/master
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.