我已经使用 Git 十多年了,我所有的事情都是通过命令行完成的。我对很多事情都有别名,而且通常喜欢我的工作流程。
但有一个痛点:在我当前的项目中切换分支很乏味。
git switch <tab>
尝试从我的本地分支和自动完成所有当前的远程分支和人们忘记删除的旧远程分支:
zsh: do you wish to see all 251 possibilities (126 lines)?
因此,我输入
git branch
查看本地分支,然后复制并粘贴遵循我们团队惯例的相当长的分支名称。
我不想采用整个 GUI 或编辑器插件,但我想要一种更快的方法。
是否有像
git switch
这样的命令只会列出本地分支 - git branch
(而不是git branch -a
)显示的分支?或者一个命令行工具可以让我使用箭头选择要检查的分支?
我没有看到简单的答案,所以我编写了一个 zsh 脚本。我将其命名为
switch_branches
并给它起了别名 sb
。
用法如下:
~: sb
1 foo
2 bar
3 main
4 release
5 baz
switch to which?
如果我输入
4
,我会看到:
4
Switched to branch 'release'
Your branch is up to date with 'origin/release'.
脚本是:
#!/bin/zsh
# initialize an index and an empty array of branches
i=1
branches=()
# list local branches in plain format and loop through them
git for-each-ref --format='%(refname:short)' refs/heads/ | while read -r branchname ; do
branches+=($branchname)
echo "$i $branchname"
((i++))
done
echo "switch to which?"
# read the user's selected integer
read selected_index
git switch ${branches[$selected_index]}