git分支可以用数字列出吗?

时间:2017-04-13 07:29:08

标签: git branch

我想知道是否有人建立了一个脚本或者有办法用数字列出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

3 个答案:

答案 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
}

哪个有点像;

enter image description here