搜尋

首頁  >  問答  >  主體

git - 切換到哪個分支,本地就下載了哪個分支的程式碼嘛?

切換到哪個分支,本地就下載了哪個分支的程式碼嘛?

为情所困为情所困2812 天前796

全部回覆(6)我來回復

  • PHPz

    PHPz2017-05-02 09:35:50

    如果是大家一起協作的情況,可能其他人推了其他分支到中央倉庫,這時候你本地是看不到的。
    例如原來只有master分支,另外一个人推送了f1分支。
    這時在你的本地,

    λ git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master

    直接執行切換分支到f1

    λ git checkout f1
    error: pathspec 'f1' did not match any file(s) known to git.

    當然是不行的啦。
    那該怎麼做呢?

    你可以把中央的分支資訊取下來

    λ git fetch origin
    remote: Counting objects: 3, done.
    remote: Compressing objects: 100% (2/2), done.
    remote: Total 3 (delta 1), reused 0 (delta 0)
    Unpacking objects: 100% (3/3), done.
    From https://git.coding.net/xxx/xxx
     * [new branch]      f1         -> origin/f1
    
    λ git branch -a
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/f1
      remotes/origin/master

    這樣你就能愉快地切換分支了

    λ git checkout f1
    Branch f1 set up to track remote branch f1 from origin.
    Switched to a new branch 'f1'

    此時你已經在f1分支了,

    λ git branch -a
    * f1
      master
      remotes/origin/HEAD -> origin/master
      remotes/origin/f1
      remotes/origin/master

    *在前面表示本地目前所指向的分支。

    回覆
    0
  • PHPz

    PHPz2017-05-02 09:35:50

    好像是的,你可以切一下

    回覆
    0
  • 某草草

    某草草2017-05-02 09:35:50

    具體程式碼是怎麼儲存的不確定,沒研究過。但是切換這個功能,應該不是下載全部程式碼。應該是先偵測本地程式碼,然後把本地沒有的程式碼下載下來,本地有的程式碼不下載。如果你細心觀察,一個專案的程式碼量大的時候,你初次克隆需要好多時間,但是切換分支則速度快很多。雖然程式碼和分支保持一致,但是感覺並不是每次都重新下載所有程式碼。

    回覆
    0
  • 某草草

    某草草2017-05-02 09:35:50

    除非你本地是最新的,如果不是還是需要你自己執行git pull origin 分支才可以同步到對應分支下最新版本的

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-02 09:35:50

    本地有所有的分支代碼啊,每個人的倉庫都是對各個分支版本的clone,完全一樣的,要不怎麼叫clone呢。

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-02 09:35:50

    切換完分支後,需要從伺服器拉去最新程式碼

    git pull origin xxx分支名称

    回覆
    0
  • 取消回覆