【发布时间】:2018-11-27 08:20:36
【问题描述】:
我在想我能不能拉。
如果我的分支基于一个远程分支,那么他有远程跟踪分支,所以我可以拉。
如果我的分支基于 commit,它没有远程跟踪分支,因此 pull 会失败。
我设法找到的是,当使用命令git branch -vv:
- 如果有远程跟踪,它将显示在方括号中。示例:
* origin/before-yo b0b97cf [remotes/origin/before-yo] Move to subfolder - 如果分支基于提交,则不会有任何远程引用指示。示例:
* 2fbe2ab473fe8f7aea2a36642aea1dc7d36add51 2fbe2ab Advance counter
有没有更好的方法来了解是否有远程跟踪分支连接到我当前的工作分支?
另外,git branch -vv 在某些情况下可能不起作用吗?
谢谢。
【问题讨论】:
-
您真的是在询问您的分支是否有远程跟踪分支吗?
git rev-parse --abbrev-ref --symbolic-full-name @{u}应该这样做,如果有远程跟踪分支,它将显示远程跟踪分支,如果没有则给出错误消息,“致命:没有为分支 'XYZ' 配置上游”。 -
@LasseVågsætherKarlsen - 谢谢。想要将其添加为答案?
-
你使用的是什么版本的 Git?现代人说
* (HEAD detached at <hash>)用于分离的HEAD 案例,您的似乎显示为* 2fbe2ab...,您的案例2 以上。 -
@torek - git 版本
2.7.4 -
啊,好吧,2.7.4 也打印了
* (HEAD detached at ...),所以获得* 2fbe2ab473fe8f7aea2a36642aea1dc7d36add51的唯一方法是创建一个实际命名2fbe2ab473fe8f7aea2a36642aea1dc7d36add51的分支,例如,git checkout -b 2fbe2ab473fe8f7aea2a36642aea1dc7d36add51。虽然 Git 允许这样做,但这不是一个好主意,因为现在这个名称是指哈希 ID 还是分支名称变得模棱两可。
标签: git git-branch git-pull git-track