簡體   English   中英

在 Neovim 中檢索 git_main_branch

[英]Retrieve git_main_branch in Neovim

所以我最近對 Neovim/Spacevim 非常熟悉,這真是太棒了!

我正在設置一些個人鍵綁定和命令以及你有什么,目前正在研究 Git 的東西。

來自使用 VSCode 和 iTerm2,當想要從任何分支切換到mastermain或任何分支時,我有一個別名,如下所示:

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 ,它都會將分支更改為mastermain或在該特定存儲庫中設置的任何分支。 嗚呼!

我想感謝@dwelle 在此線程中發布的答案 - 如何在 Git 中獲取主分支的默認值? - 讓我得到最終結果!

這是一個很好的解決方案。 只是想為此添加我自己的 2 美分,如果您使用 GitHub 作為存儲庫,並且安裝了 GitHub CLI,則可以通過鍵入獲取主目標分支

gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'

這將打開另一種模式,該模式將列出主分支的名稱。 我知道你已經到了你需要的地方,但這可能是你可以實施的另一種更清潔的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM