所以我最近对Neovim/Spacevim非常熟悉,这太棒了!
我正在建立一些个人的密钥绑定和命令,以及你有什么,目前正在工作的Git的东西。
由于使用VSCode和iTerm2,当希望从任何分支切换到master或main或其他主要分支时,我有一个别名如下:
alias gcom=git checkout $(git_main_branch)我只需在终端中输入gcom,它就会自动切换到主分支的任何位置。不幸的是,在Neovim中,git_main_branch不是一件事,所以我试图找出一个等价的东西,我可以在Neovim命令提示符中键入:Gcom,然后切换到主分支。
我试图在我的init.vim文件中设置这样的函数(我已经安装了coc和所有相应的Git插件,包括fugitive):
function! GitCheckoutMain()
let gitMainBranch = system('git_main_branch')
execute "normal! :Git checkout" . gitMainBranch
endfunction然后设置一个命令,如
command! Gcom :call GitCheckoutMain()但这不起作用。有谁知道我怎样才能用Neovim完成这件事吗?谢谢!
发布于 2021-11-19 16:37:11
好的,我想我可能已经想出了解决这个问题的方法。我将我的GitCheckoutMain函数从最初的帖子改为如下:
function GitCheckoutMain()
let mainGitBranch = system('git branch | grep -o -m1 "\b\(master\|main\)\b"')
echo mainGitBranch
endfunction我将它绑定到上面的Gcom命令,当我从Neovim终端运行:Gcom时,它会打印出master,在回购的情况下,master是主要的分支。也将在一个主要分支为main的回购程序中测试这一点,但我认为这将实现我想要的.
编辑:这实际上是有效的!这是我的完整代码,供任何感兴趣的人使用。
function GitCheckoutMain()
let mainGitBranch = system('git branch | grep -o -m1 "\b\(master\|main\)\b"')
execute "normal! :Git checkout " . mainGitBranch
endfunction
...
command! Gcom :call GitCheckoutMain()无论我在哪个分支上,如果我将:Gcom输入到Neovim终端,它将将分支更改为master或main,或者在特定的存储库中设置任何主要分支。哇哦!
我想归功于@dwelle在这个帖子中发布的答案-- How to get the default for the master branch in Git? --让我得到了最终的结果!
发布于 2021-11-19 16:57:48
这是个很好的解决方案!我只想加上我自己的两分钱。如果使用GitHub作为存储库,并且安装了GitHub CLI,则可以通过键入
gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'这将打开另一个模式,它将列出主分支的名称。我知道您已经到了您需要的地方,但是这可能是另一个您可以实现的更干净的方法。
https://stackoverflow.com/questions/70037870
复制相似问题