[英]Retrieve git_main_branch in Neovim
所以我最近对 Neovim/Spacevim 非常熟悉,这真是太棒了!
我正在设置一些个人键绑定和命令以及你有什么,目前正在研究 Git 的东西。
来自使用 VSCode 和 iTerm2,当想要从任何分支切换到master
或main
或任何主分支时,我有一个别名,如下所示:
alias gcom=git checkout $(git_main_branch)
我可以在终端中输入gcom
,它会自动切换到主分支。 不幸的是,在 Neovim 中, git_main_branch
不是一个东西,所以我试图找出一个等价物,在那里我可以在 Neovim 命令提示符中输入:Gcom
之类的东西,然后它会切换到主分支。
我试图在我的 init.vim 文件中设置一个像这样的init.vim
文件(我已经安装了coc
和所有相应的 Git 插件,包括fugitive
)
function! GitCheckoutMain()
let gitMainBranch = system('git_main_branch')
execute "normal! :Git checkout" . gitMainBranch
endfunction
然后设置一个命令
command! Gcom :call GitCheckoutMain()
但这并不能解决问题。 有谁知道我如何用 Neovim 完成这个任务? 谢谢!
好的,所以我想我实际上可能已经想出了如何解决这个问题。 我将我的GitCheckoutMain
function 从最初的帖子更改为如下:
function GitCheckoutMain()
let mainGitBranch = system('git branch | grep -o -m1 "\b\(master\|main\)\b"')
echo mainGitBranch
endfunction
我从上面将它绑定到我的Gcom
命令,当我从 Neovim 终端运行:Gcom
时,它会在master
是主分支的 repo 的情况下打印出master
。 还将在主分支为main
的 repo 中对此进行测试,但我认为这会做我想要的......
编辑:这确实有效,这是我的完整代码。 对于任何有兴趣的人。
function GitCheckoutMain()
let mainGitBranch = system('git branch | grep -o -m1 "\b\(master\|main\)\b"')
execute "normal! :Git checkout " . mainGitBranch
endfunction
...
command! Gcom :call GitCheckoutMain()
无论我在哪个分支上,如果我在 Neovim 终端中输入:Gcom
,它都会将分支更改为master
或main
或在该特定存储库中设置的任何主分支。 呜呼!
我想感谢@dwelle 在此线程中发布的答案 - 如何在 Git 中获取主分支的默认值? - 让我得到最终结果!
这是一个很好的解决方案。 只是想为此添加我自己的 2 美分,如果您使用 GitHub 作为存储库,并且安装了 GitHub CLI,则可以通过键入获取主目标分支
gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'
这将打开另一种模式,该模式将列出主分支的名称。 我知道你已经到了你需要的地方,但这可能是你可以实施的另一种更清洁的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.