在網路上一篇文章上看到,git push操作的完整指令是:
「git push <遠端主機名稱> <本地分支名稱>:<遠端分支名稱>」
文章的作者還說了,「如果省略遠端分支名,則表示將本地分支推送與之存在"追蹤關係"的遠端分支(通常兩者同名),如果該遠端分支不存在,則會被新建。
$ git push origin master
上面指令表示,將本地的master分支推送到origin主機的master分支。如果後者不存在,則會被新建。 ”
我在本地新建倉庫“bendi”,github上新建遠端倉庫“origin”,然後本地倉庫push到遠端。
沒有設定set-upstream,第一次push的時候也沒加-u參數,而是直接「git push origin master」。
「追蹤關係」把,為什麼我還是可以透過「git push origin master」這種不帶遠端分支名的命令來push到遠端呢? bendi和origin這2個倉庫沒有設定過追蹤關係啊。
這個應該不難解釋。
如果你在目前資料夾中執行過
git remote add
,指令應該是git remote add origin https://github.com/yourName/yourRepo.git
通常都會這麼打。 。這樣一來,origin 就指向你的遠端函式庫。你可以試試,把 origin 從那個指令中去掉,應該會報錯。如果你是用
git clone
把遠端函式庫 clone 了下來,那麼應該是會自動幫你設定好 origin 指向。但是有一點你要注意。 。到目前為止說的
origin
不是倉庫名。 。而是給遠端倉庫在本地起的一個別名。對於你的情況,你說要“github上新建遠程倉庫‘origin’”,我有一點兒懵==!倉庫名,一般不會叫 origin 。 。例如你的專案叫 Angular-Table, 那你需要做的就是
git remote add origin https://github.com/yourName/Angular-Table.git
。这样一来,你就可以用git push origin master
來推送更改了。再說 branch 的事兒。
git push origin master
意思就是,把你本地的 master branch 推送到远程 origin。如果写成git push origin master:foo
,意思是把本地的 master branch 推送到遠端的 foo branch。順便,這裡引出一個黑科技。 。例如我想刪除遠端的 foo branch, 指令就是:
git push origin :foo
你可以透過
git branch
来查看本地有什么branch。也可以通过git remote -v
来查看远程有什么 branch。顺便,git remote -v
可以查看 remote 信息,去試試吧你看下遠端有沒有一個master分支,說不定你提交到這個分支了
你可以執行以下指令查看分支的
upstream
這篇文章應該會對你有幫助