搜尋

首頁  >  問答  >  主體

github - 請教一個問題,關於 “git push 遠端倉庫名稱 本地分支:遠端分支” 。

在網路上一篇文章上看到,git push操作的完整指令是:

「git push <遠端主機名稱> <本地分支名稱>:<遠端分支名稱>」

文章的作者還說了,「如果省略遠端分支名,則表示將本地分支推送與之存在"追蹤關係"的遠端分支(通常兩者同名),如果該遠端分支不存在,則會被新建。

$ git push origin master

上面指令表示,將本地的master分支推送到origin主機的master分支。如果後者不存在,則會被新建。

我在本地新建倉庫“bendi”,github上新建遠端倉庫“origin”,然後本地倉庫push到遠端。

沒有設定set-upstream,第一次push的時候也沒加-u參數,而是直接「git push origin master」。

問題:現在本地倉庫「bendi」和遠端倉庫「origin」之間應該沒有

「追蹤關係」把,為什麼我還是可以透過「git push origin master」這種不帶遠端分支名的命令來push到遠端呢? bendi和origin這2個倉庫沒有設定過追蹤關係啊。

给我你的怀抱给我你的怀抱2792 天前695

全部回覆(3)我來回復

  • PHP中文网

    PHP中文网2017-05-02 09:43:14

    這個應該不難解釋。

    如果你在目前資料夾中執行過 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 信息,去試試吧

    回覆
    0
  • 高洛峰

    高洛峰2017-05-02 09:43:14

    你看下遠端有沒有一個master分支,說不定你提交到這個分支了

    回覆
    0
  • 为情所困

    为情所困2017-05-02 09:43:14

    你可以執行以下指令查看分支的 upstream

    git branch -vv

    這篇文章應該會對你有幫助

    回覆
    0
  • 取消回覆