git branch -vv解釋

Votes

Upvotes

0

Upvotes: 0

Downvotes

0

Downvotes: 0

Net votes

+0

Prompt

git branch -vv為什麼看不到所有在remote的branch?

Response

git branch -vv 主要只顯示本機 branch,以及每個本機 branch 目前追蹤的 upstream,所以不會列出所有 remote branches。

例如:

git branch -vv

可能看到:

* main    a1b2c3d [origin/main] latest commit
  feature d4e5f6g [origin/feature: ahead 2] update

這裡的 mainfeature 都是本機 branch;方括號中的 origin/main 才是它們追蹤的 remote-tracking branch。

要查看 remote branches:

git branch -r

查看本機和 remote branches:

git branch -a

為什麼 git branch -r 也可能看不到最新 remote branch?

因為你的本機尚未更新 remote 資訊。先執行:

git fetch --all --prune

再查看:

git branch -r

其中:

  • fetch --all:更新所有 remote 的 branch 資訊
  • --prune:刪除本機中已經不存在於 remote 的舊 remote-tracking branch

查看伺服器上實際存在的 branch

如果想直接詢問 remote,而不是依賴本機快取:

git ls-remote --heads origin

這會顯示 origin 上實際存在的所有 branch,例如:

a1b2c3... refs/heads/main
d4e5f6... refs/heads/feature/test

把 remote branch 建立成本機 branch

假設你看到:

origin/feature/test

可以建立對應的本機 branch:

git switch --track origin/feature/test

或明確命名:

git switch -c feature/test --track origin/feature/test

之後它才會出現在:

git branch -vv

常用檢查流程是:

git remote -v
git fetch --all --prune
git branch -a
git branch -vv

簡單來說,git branch -vv 看的是「我本機有哪些 branch,以及它們追蹤誰」,不是「remote 上有哪些 branch」。

Comments

Login to add a comment.

No comments yet.