gpt4 book ai didi

bash - 如何使用模糊查找器获取 git 的分支?

转载 作者:行者123 更新时间:2023-11-29 08:54:43 27 4
gpt4 key购买 nike

我找到了 git examples with fzf(fuzzy finder)他们确实工作得很好。喜欢:

# fbr - checkout git branch
fbr() {
local branches branch
branches=$(git branch -vv) &&
branch=$(echo "$branches" | fzf +m) &&
git checkout $(echo "$branch" | awk '{print $1}' | sed "s/.* //")
}

# fbr - checkout git branch (including remote branches)
fbr() {
local branches branch
branches=$(git branch --all | grep -v HEAD) &&
branch=$(echo "$branches" |
fzf-tmux -d $(( 2 + $(wc -l <<< "$branches") )) +m) &&
git checkout $(echo "$branch" | sed "s/.* //" | sed "s#remotes/[^/]*/##")
}

我的 .bashrc 中有这个

bind '"\C-b": "fbr \n"'

在我按下 Ctrl-b 后,我选择了一个 git 的分支,它在我按下 enter 后立即切换,但是有没有办法先输入一些东西,比如 git push staging(然后获取分支列表并将选定的分支放在调用分支列表之前光标所在的位置,然后我按回车键将选定的分支推送到staging)

例如:git push staging(Ctrl-b - 选择一个分支)我想得到这个输出 - git push staging selected_branch

最佳答案

这些是我在 bash 中使用的键绑定(bind)

  • CTRL-GCTRL-F - git status
  • 中列出的文件
  • CTRL-GCTRL-B - 分支
  • CTRL-GCTRL-T - 标签
  • CTRL-GCTRL-H - 提交哈希值
  • CTRL-GCTRL-R - Remote

请注意,如果您使用的是 tmux,则不需要 redraw-current-line

is_in_git_repo() {
git rev-parse HEAD > /dev/null 2>&1
}

gf() {
is_in_git_repo &&
git -c color.status=always status --short |
fzf --height 40% -m --ansi --nth 2..,.. | awk '{print $2}'
}

gb() {
is_in_git_repo &&
git branch -a -vv --color=always | grep -v '/HEAD\s' |
fzf --height 40% --ansi --multi --tac | sed 's/^..//' | awk '{print $1}' |
sed 's#^remotes/[^/]*/##'
}

gt() {
is_in_git_repo &&
git tag --sort -version:refname |
fzf --height 40% --multi
}

gh() {
is_in_git_repo &&
git log --date=short --format="%C(green)%C(bold)%cd %C(auto)%h%d %s (%an)" --graph |
fzf --height 40% --ansi --no-sort --reverse --multi | grep -o '[a-f0-9]\{7,\}'
}

gr() {
is_in_git_repo &&
git remote -v | awk '{print $1 " " $2}' | uniq |
fzf --height 40% --tac | awk '{print $1}'
}

bind '"\er": redraw-current-line'
bind '"\C-g\C-f": "$(gf)\e\C-e\er"'
bind '"\C-g\C-b": "$(gb)\e\C-e\er"'
bind '"\C-g\C-t": "$(gt)\e\C-e\er"'
bind '"\C-g\C-h": "$(gh)\e\C-e\er"'
bind '"\C-g\C-r": "$(gr)\e\C-e\er"'

关于bash - 如何使用模糊查找器获取 git 的分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36513310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com