为什么`git branch`用`+`注释一个分支,而用`*`注释另一个分支?

14 浏览
0 Comments

为什么`git branch`用`+`注释一个分支,而用`*`注释另一个分支?

当我执行git branch命令时,返回的结果类似于:

~/Dev/project/main (main) $ git branch
  bug22
* main
+ feature33
  feature19

0
0 Comments

git branch命令在分支名称前面使用`+`和`*`的原因是因为使用了git worktrees。无论是否使用worktrees,`*`(总是)用于注释你当前检出的分支。`+`用于注释你其他工作树中检出的分支。

如果尝试检出`feature33`,则会出现以下错误:

fatal: 'feature33' is already checked out at '~/Dev/project/features'

你如何知道这是从2.23版本开始的?我没有看到这里提到它。

Git是开源的,存储在一个Git仓库中:只需克隆它,并使用历史pickaxe工具查找实现。在这种情况下,通过运行`git log -S "plus sign" -- Documentation/git-branch.txt`命令可以找到提交哈希ID `ab3138146f9ce1d819cefab4515965604de76d9d`,然后使用`git describe --contains`命令可以告诉你`v2.23.0-rc0~95^2~1`,就可以知道答案了。

谢谢。那个评论很有用。我学到了关于`git log -S`和`git describe`的知识。这是一种聪明的搜索`plus sign`的方法。

0