我想知道是否有人建立了一个脚本或者有办法用数字列出git分支,而不是这个(最好是在bash中)
feature/myusername/ID-1111-my-branch-name
feature/myusername/ID-2222-my-branch-name
feature/myusername/ID-3333-my-branch-name
feature/myusername/ID-4444-my-branch-name
我可以得到这样的列表(或类似的)
#1 feature/myusername/ID-1111-my-branch-name
#2 feature/myusername/ID-2222-my-branch-name
#3 feature/myusername/ID-3333-my-branch-name
#4 feature/myusername/ID-4444-my-branch-name
然后检查分支就像
一样简单git checkout #4
答案 0 :(得分:5)
这听起来很容易创建。一个简单的实现可以使用两个单行脚本/别名。
git-lbr( l ist br anch):
#!/bin/bash
git branch --no-color | cat -n
git-coid( c heck o ut id )
#!/bin/bash
git checkout $(git lbr | egrep "^\s+$1\s+" | egrep -o '\S*$')
但这是一个简单的实现,对于缺少输入/非数字输入/超出范围分支ID的情况没有错误处理。
使用示例:
$ git lbr
1 branch_42
2 feature/super-feature
3 foo/bar
4 * master
$ git coid 1
Switched to branch 'branch_42'
Your branch is up-to-date with 'master'.
答案 1 :(得分:1)
对于Windows上的Git Bash,我在用户目录中编辑了.gitconfig文件,使其具有以下部分:
[alias]
lbn = !git branch | cat -n
cobn = "!f() { branch_name=$(git branch --format='%(refname:short)' | head -n $1 | tail -n 1); git checkout $branch_name; }; f"
这可能不是最复杂的方法,但对我有用:
$ git lbn
1 bugfix/1234_CrashInAboutScreen
2 feature/feature1
3 feature/feature2
4 * master
$ git cobn 2
Switched to branch 'feature/feature1'
像Alderath's answer一样,我的也是一个简单的实现,没有输入验证或错误处理。
答案 2 :(得分:0)
上述答案对我没有用,并给出了语法错误:/。也许不同操作系统的shell之间存在差异(我使用mac)。这是我在.bashrc文件中添加的内容;
# List branches by id
alias gbls='git branch --no-color | cat -n'
# Checkout branch by id
function gcb() {
local index=$1
local branches=$(git branch | grep "[^* ]+" -Eo)
local counter=0
echo "$branches" | while IFS= read -r branch ; do
counter=$((counter+1))
if [ "$index" -eq "$counter" ]; then
git checkout $branch
fi
done
}
哪个有点像;