非常简单。想象一下这种情况:
[user@home repo]$ git branch
* branch-im-currently-working-on
long-branch-name-i-want-to-checkout-without-using-my-mouse
long-branch-name-i-dont-want-to-checkout
.. more-branches-with-similar-names
[user@home repo]$ git checkout now-i-have-to-type-a-lot-or-use-the-mouse
有什么方法吗?一个简洁的解决方案是,如果我可以按号码结账,例如git checkout 1
来结账列表中的第一个。
我可以使用tab
,但是如果我有20个分支都有相似的名字,我最终必须像疯子一样选项卡,结果比拿起鼠标慢,这很痛苦。
编辑:我认为这个问题并不是特别受欢迎,所以我只是尝试使用较短的分支名称别名/较少的本地分支来解决它。
答案 0 :(得分:4)
以同样的方式"键入" 任何长命令或选项。安装shell的选项卡完成。 Git具有出色的标签完成支持。
您还可以使用git checkout -
在两个分支之间快速切换,这会检出您在上次结帐前的上一个分支。
答案 1 :(得分:0)
如果您使用的是Emacs,则可以使用meta- / meta-p,并且它通常会使用最近使用的自动完成功能自动完成。
答案 2 :(得分:0)
如果您使用的是tmux,则可以使用如下脚本:
sed -n "${1}p" | expand | while read line; do
echo "$line" | tr -d \\n | tmux loadb -
done
然后通过该脚本运行git branch
以将分支名称剪切到粘贴缓冲区中。例如,如果上面的行位于名为tb
的脚本(或bash函数)中,则可以执行以下操作:
git branch | tb 3
选择git-branch输出的第3行,或匹配分支名称中的正则表达式:
git branch | tb /dont/
匹配包含文本dont
的分支。然后,您只需将文本从粘贴缓冲区中拉出(默认键序列为^b]
)。
如果你没有使用tmux
...我的哀悼。但是你可以通过pbcopy
简单地管理git-branch(只需用tmux loadb
替换脚本中对pbcopy
的调用,主要是为了删除令人恼火的换行符。在粘贴缓冲区中)。
答案 3 :(得分:0)
将此别名添加到您的git config中,它将搜索并签出类似分支:
> git config --global alias.fb '!sh -c \"git branch -a | grep -v remotes | grep $1 | head -n 1 | xargs git checkout\"'
我的分支机构列表:
> git branch
18-notification-topic
* develop
别名的用法:
> git fb 18
Switched to branch '18-notification-topic'
Your branch is up to date with 'origin/18-notification-topic'.