【发布时间】:2020-11-13 16:37:56
【问题描述】:
我遇到了一个奇怪的问题,我真的不知道它是由与我的 Git 安装或我的 shell 相关的东西引起的,还是完全由其他原因引起的。如果我在一个有大量分支和提交的 Git 存储库中,并且我尝试列出分支:
$ git branch
$ git branch -a
$ git branch --list
根本没有输出。但是,如果我通过echo 运行这些命令的输出,结果与预期的一样:
$ echo "`git branch`"
local-branch-1
local-branch-2
* master
$ echo "$(git branch -a)"
local-branch-1
local-branch-2
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
我的配置是 macOS 10.14.6,通过 Homebrew 安装了 Git 2.29.2。我正在使用带有 Prezto 或 PowerLevel10k 配置的 ZSH 5.8(也是 Homebrew)。虽然这些工具为 Git 命令的许多快捷方式提供别名,但没有任何别名 来自 git * 可能会造成干扰:
$ type git
git is /usr/local/bin/git
git is /usr/bin/git
我也试过原生的 Bash 5.0.18 shell,结果是一样的。
ZSH 选项卡补全正确显示了分支,所以如果我,例如:
$ git checkout <tab>
local-branch-1 master
local-branch-2 origin/HEAD
HEAD origin/master
我从其他一些 Git 命令中得到了类似的行为,例如 git config --local --list。但所有“动作”命令(push、pull、add、commit 等)似乎都按预期工作,包括正确的输出。 (但一些“仅信息”命令也是如此,例如git version。)
这对我来说感觉像是某种 shell 配置错误,但据我所知,它只会影响 Git,而且它发生在我花哨的 ZSH 安装和 vanilla Bash 中,所以可能两者之间存在一些奇怪的交互?我到处搜索有类似问题的其他人,但我发现的所有内容都归结为未在没有提交的新存储库中列出的分支,这里绝对不是这种情况。
在这一点上我有点没有想法,所以我希望有人对进一步调查提出建议。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: git shell homebrew zsh gnu