換了新機器。我需要將作業分支從我的舊機器推到遠程。但我無法通過 git 命令找到遠程分支。我可以在 BitBucket UI 中看到分支。
此搜索全部未顯示分支
git branch -all
但是我可以在 grep 搜索中看到我的分支
git ls-remote | grep "my_branch_name"
From ssh://git@my_org.com:xxxx/xxxx/xxx.git
ed18a***************************113aa4ac HEAD
5b9a1***************************f4aa4f3a refs/heads/feature/mybranch-10XX
704e2***************************2a4586d5 refs/heads/feature/mybranch-5XX
有沒有辦法把這些拿到我的新本地?
uj5u.com熱心網友回復:
你已經有了這些分支。它們被命名為origin/feature/mybranch-10XX和origin/feature/mybranch-5XX。
不過,那些不是分支。相反,它們是分支。如果你想在這些分支上作業,你需要從這些分支中創建分支。如果這沒有意義,那么您沒看錯:Git過度使用了分支這個詞,以至于它失去了所有意義。(請參閱“分支”到底是什么意思?)
為了理解這一點,停止稱事物為“分支”(或者至少,不僅僅是分支)。使用這些詞:
- 遠程跟蹤名稱:類似
origin/mainor的名稱origin/feature/mybranch-10XX; - 分支名稱(或“本地分支”,如果您愿意的話):類似
mainor的名稱feature/mybranch-10XX;和 - commit:由大而丑陋的哈希 ID 標識的事物。
Git 將使用名稱(分支名稱和遠程跟蹤名稱)查找提交的哈希 ID,然后使用這些提交來查找更早的提交。通過使用這些名稱(“分支”)找到的提交集也是一個“分支”。所以取決于一個人說“分支”時的意思,你要么有分支(提交集),要么你有分支(遠程跟蹤名稱),或者你沒有分支(你缺少本地分支名稱)。
幸運的是,如果您有一個遠程跟蹤名稱,origin/feature/mybranch-10XX并且您呼叫 Git 切換到(本地)分支名稱:
git switch feature/mybranch-10XX
并且該分支名稱尚不存在,這將呼叫該--guess選項,該選項默認為打開:git switchorgit checkout 表示 git switch --guessor git checkout --guess。1 猜測代碼攔截了 Git會給出的錯誤,如果你使用--no-guess. Git正要說沒有 localfeature/mybranch-10XX的意思,但隨后猜測代碼攔截了錯誤。猜測代碼掃描您的遠程跟蹤名稱,尋找匹配的名稱(在這種情況下剝離origin/部分之后)。如果找到,它會根據遠程跟蹤名稱創建一個新的(本地)分支名稱,以標識相同的提交。該提交現在“在”(本地)分支上, “在”遠程跟蹤名稱上。它也可能在許多其他分支上:在 Git 中,提交通常同時在多個分支上。
無論如何,既然git switch已經git checkout使用猜測代碼創建了分支名稱,Git 就可以切換到該分支。您現在將簽出該特定提交,并可以開始進行更改并使用這些更改進行新的提交。
1如果您不想讓 Git 猜測,請使用--no-guess. 在現代版本的 Git 中,您也可以默認禁用它作為配置選項。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/460226.html
上一篇:如何為git編譯libsecret檔案,而我的git安裝中沒有這個檔案夾
下一篇:用于控制父子版本的工具
