歡迎關(guān)注微信公眾號:全棧工廠
本文主要參考
問題:
近日在操作git時發(fā)現(xiàn):在本地新建一個分支渐北,添加代碼后push话肖,提示:
The current branch newBranch has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin newBranch
之所以出現(xiàn)這樣的警告宙地,和git的push默認(rèn)配置push.default有關(guān),push.default的配置選項(xiàng)有五個:nothing筷笨、current拯钻、upstream膀估、simple躁倒、matching荞怒。它們的作用分別為:
- nothing: 直接push會出錯洒琢,需要顯式的指出推送的遠(yuǎn)程分支,例如:git push origin master挣输;
- current: 推送時只會推送當(dāng)前所在的分支到遠(yuǎn)程同名分支,如果遠(yuǎn)程分支不存在相應(yīng)的同名分支福贞,則創(chuàng)建該分支撩嚼;
- upstream: 推送當(dāng)前分支到它的upstream分支上,這個模式只適用于推送到與拉取數(shù)據(jù)相同的倉庫(比如central workflow)挖帘;
- simple: 在中央倉庫工作流程模式下完丽,只能推送到與本地分支名一致的upstream分支中,如果推送的遠(yuǎn)程倉庫和拉取數(shù)據(jù)的遠(yuǎn)程倉庫不一致拇舀,那么該模式會像current模式一樣進(jìn)行操作逻族。因?yàn)樵撨x項(xiàng)對于新手來說是最安全的,所以在git 2.0中骄崩,simple是push.default的默認(rèn)值配置項(xiàng)(2.0以前的默認(rèn)配置項(xiàng)是matching)聘鳞;
- matching:推送本地和遠(yuǎn)程都存在的同名分支。
了解了push.default的五個配置選項(xiàng)要拂,我們可以查看自己所在git環(huán)境的push.default配置選項(xiàng)抠璃,git有三個不同的配置文件:local(倉庫)、global(全局)脱惰、system(系統(tǒng))搏嗡,它們的優(yōu)先級為local>global>system,如果我們之前沒有手動配置過該選項(xiàng)拉一,我們可以在system配置文件中看到它的默認(rèn)配置:
git config --system -l
我們可以通過下面的命令修改默認(rèn)配置:
git config --global push.default matching
最后:
在了解問題的原因后采盒,我們可以通過以下兩個方法解決問題:
- 修改倉庫默認(rèn)配置為current: git config --local push.default current,然后git push;
- 指定push的遠(yuǎn)程分支名如: git push origin newBranch(個人推薦)
注:文中如有任何錯誤蔚润,請各位批評指正磅氨!