首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索新病毒中的git_main_branch

检索新病毒中的git_main_branch
EN

Stack Overflow用户
提问于 2021-11-19 16:19:47
回答 2查看 221关注 0票数 0

所以我最近对Neovim/Spacevim非常熟悉,这太棒了!

我正在建立一些个人的密钥绑定和命令,以及你有什么,目前正在工作的Git的东西。

由于使用VSCode和iTerm2,当希望从任何分支切换到mastermain或其他主要分支时,我有一个别名如下:

代码语言:javascript
复制
alias gcom=git checkout $(git_main_branch)

我只需在终端中输入gcom,它就会自动切换到主分支的任何位置。不幸的是,在Neovim中,git_main_branch不是一件事,所以我试图找出一个等价的东西,我可以在Neovim命令提示符中键入:Gcom,然后切换到主分支。

我试图在我的init.vim文件中设置这样的函数(我已经安装了coc和所有相应的Git插件,包括fugitive):

代码语言:javascript
复制
function! GitCheckoutMain()
  let gitMainBranch = system('git_main_branch')

  execute "normal! :Git checkout" . gitMainBranch
endfunction

然后设置一个命令,如

代码语言:javascript
复制
command! Gcom :call GitCheckoutMain()

但这不起作用。有谁知道我怎样才能用Neovim完成这件事吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-19 16:37:11

好的,我想我可能已经想出了解决这个问题的方法。我将我的GitCheckoutMain函数从最初的帖子改为如下:

代码语言:javascript
复制
function GitCheckoutMain()
  let mainGitBranch = system('git branch | grep -o -m1 "\b\(master\|main\)\b"')

  echo mainGitBranch
endfunction

我将它绑定到上面的Gcom命令,当我从Neovim终端运行:Gcom时,它会打印出master,在回购的情况下,master是主要的分支。也将在一个主要分支为main的回购程序中测试这一点,但我认为这将实现我想要的.

编辑:这实际上是有效的!这是我的完整代码,供任何感兴趣的人使用。

代码语言:javascript
复制
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终端,它将将分支更改为mastermain,或者在特定的存储库中设置任何主要分支。哇哦!

我想归功于@dwelle在这个帖子中发布的答案-- How to get the default for the master branch in Git? --让我得到了最终的结果!

票数 1
EN

Stack Overflow用户

发布于 2021-11-19 16:57:48

这是个很好的解决方案!我只想加上我自己的两分钱。如果使用GitHub作为存储库,并且安装了GitHub CLI,则可以通过键入

代码语言:javascript
复制
gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'

这将打开另一个模式,它将列出主分支的名称。我知道您已经到了您需要的地方,但是这可能是另一个您可以实现的更干净的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70037870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档