[英]List all branches with `git branch -a` does not show recently fetched branch?
我在控制台中有這段歷史:
Resolving deltas: 100% (58156/58156), completed with 1585 local objects.
From bitbucket.org:interos/datavana
* branch datavana.dev.py.3.7.3 -> FETCH_HEAD
$ git checkout datavana.dev.py.3.7.3
error: pathspec 'datavana.dev.py.3.7.3' did not match any file(s) known to git
$ git branch
* alex/dockerize
master
$ git branch -a
* alex/dockerize
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
我在嘗試運行時注意到一個問題:
git checkout datavana.dev.py.3.7.3
因為正如您所看到的那樣沒有用,而且這個分支也沒有使用git branch -a
列出,有人知道為什么我不能簽出這個分支嗎?
如果您查看問題的頂部,則會看到:
* branch datavana.dev.py.3.7.3 -> FETCH_HEAD
這意味着遠程引用datavana.dev.py.3.7.3
已本地存儲在FETCH_HEAD
。 它沒有創建具有相同名稱的本地分支。
您可以通過運行以下datavana.dev.py.3.7.3
創建一個名為datavana.dev.py.3.7.3
的本地分支:
git checkout -b datavana.dev.py.3.7.3 FETCH_HEAD
您可能運行了git fetch <remote> datavana.dev.py.3.7.3
,在這種情況下,您看到的是預期的行為。 從git-fetch
手冊頁:
獲取的ref的名稱以及它們指向的對象名稱將寫入.git / FETCH_HEAD。 腳本或其他git命令(例如git-pull(1))可以使用此信息。
通常,您可以使用git checkout
簽出遠程分支。
為什么它會執行
FETCH_HEAD
操作,以前從未見過?
我剛剛運行了git fetch
然后仔細檢查您的git config remote.origin.fetch
設置:
默認的 refspec應該已經在獲取時為你創建了本地分支:
+refs/heads/*:refs/remotes/origin/*
但是如果你有一個不同的 refspec,那么遠程分支被獲取,它的引用存儲在 FETCH_HEAD 中
git fetch datavana.dev.py.3.7.3:datavana.dev.py.3.7.3
也會在本地創建分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.