无法在远程 -- BitBucket 中找到远程 git 分支
Unable to find remote git branch in remote -- BitBucket
切换到新机器。我需要将从我的旧机器推送到远程的工作分支拉出来。但是我无法通过 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
有没有办法把这些带到我的新本地?
你已经有了那些分支。他们被命名为 origin/feature/mybranch-10XX
和 origin/feature/mybranch-5XX
.
不过,这些不是 分支机构。相反,它们是分支机构。如果你想在这些分支上工作,你需要从这些分支创建分支。如果这没有意义,那么您没看错:Git 过度使用分支这个词 以至于它失去了所有意义。 (参见 What exactly do we mean by "branch"?)
为了理解这一点,停止将事物称为“分支”(或者至少,不要 只是 分支)。使用这些词:
- remote-tracking 名称:类似于
origin/main
或 origin/feature/mybranch-10XX
; 的名称
- 分支名称(或“本地分支”,如果您愿意):名称如
main
或 feature/mybranch-10XX
;和
- commit:由丑陋的大哈希 ID 标识的内容。
Git 将 找到 使用名称(分支名称和 remote-tracking 名称)提交的哈希 ID,以及然后将使用这些提交来查找更早的提交。使用这些名称(“分支”)找到的提交集也是一个“分支”。因此,根据一个人说“分支”时的意思,您要么拥有分支(提交集),要么拥有分支(remote-tracking 名称),或者没有分支(您缺少本地分支名称)。
幸运的是,如果您有一个 remote-tracking 名称,例如 origin/feature/mybranch-10XX
,并且您要求 Git 切换到(本地)分支名称:
git switch feature/mybranch-10XX
并且该分支名称 尚不存在 ,这将调用 --guess
选项,默认情况下处于启用状态:git switch
或 git checkout
的意思是 git switch --guess
or git checkout --guess
.1 猜码截取Git [=46的错误=] 会给出 ,如果你使用 --no-guess
。 Git本来about说了句大意是没有本地feature/mybranch-10XX
,但是后来猜码截获了错误。猜测代码会扫描您的 remote-tracking 名称以寻找匹配的名称(在本例中剥离 origin/
部分之后)。如果它找到一个,它 创建 一个新的 (本地)分支名称 从 remote-tracking 名称,识别 同样的提交。该提交现在“在”(本地)分支 和 “在”remote-tracking 名称上。它也可能在许多其他分支上:提交通常同时在许多分支上,在 Git.
无论如何,既然git switch
或git checkout
已经使用猜码创建了分支名称,Git就可以切换了到那个分支。您现在将检查特定的 commit 并可以开始进行更改并使用它们进行新的提交。
1如果您不想希望Git猜测,请使用--no-guess
关闭此功能。在 Git 的现代版本中,您还可以将其作为配置选项默认禁用。
切换到新机器。我需要将从我的旧机器推送到远程的工作分支拉出来。但是我无法通过 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
有没有办法把这些带到我的新本地?
你已经有了那些分支。他们被命名为 origin/feature/mybranch-10XX
和 origin/feature/mybranch-5XX
.
不过,这些不是 分支机构。相反,它们是分支机构。如果你想在这些分支上工作,你需要从这些分支创建分支。如果这没有意义,那么您没看错:Git 过度使用分支这个词 以至于它失去了所有意义。 (参见 What exactly do we mean by "branch"?)
为了理解这一点,停止将事物称为“分支”(或者至少,不要 只是 分支)。使用这些词:
- remote-tracking 名称:类似于
origin/main
或origin/feature/mybranch-10XX
; 的名称
- 分支名称(或“本地分支”,如果您愿意):名称如
main
或feature/mybranch-10XX
;和 - commit:由丑陋的大哈希 ID 标识的内容。
Git 将 找到 使用名称(分支名称和 remote-tracking 名称)提交的哈希 ID,以及然后将使用这些提交来查找更早的提交。使用这些名称(“分支”)找到的提交集也是一个“分支”。因此,根据一个人说“分支”时的意思,您要么拥有分支(提交集),要么拥有分支(remote-tracking 名称),或者没有分支(您缺少本地分支名称)。
幸运的是,如果您有一个 remote-tracking 名称,例如 origin/feature/mybranch-10XX
,并且您要求 Git 切换到(本地)分支名称:
git switch feature/mybranch-10XX
并且该分支名称 尚不存在 ,这将调用 --guess
选项,默认情况下处于启用状态:git switch
或 git checkout
的意思是 git switch --guess
or git checkout --guess
.1 猜码截取Git [=46的错误=] 会给出 ,如果你使用 --no-guess
。 Git本来about说了句大意是没有本地feature/mybranch-10XX
,但是后来猜码截获了错误。猜测代码会扫描您的 remote-tracking 名称以寻找匹配的名称(在本例中剥离 origin/
部分之后)。如果它找到一个,它 创建 一个新的 (本地)分支名称 从 remote-tracking 名称,识别 同样的提交。该提交现在“在”(本地)分支 和 “在”remote-tracking 名称上。它也可能在许多其他分支上:提交通常同时在许多分支上,在 Git.
无论如何,既然git switch
或git checkout
已经使用猜码创建了分支名称,Git就可以切换了到那个分支。您现在将检查特定的 commit 并可以开始进行更改并使用它们进行新的提交。
1如果您不想希望Git猜测,请使用--no-guess
关闭此功能。在 Git 的现代版本中,您还可以将其作为配置选项默认禁用。