[Git] 修正git在cmder總是顯示master -> origin的異常

Cause

前陣子遇到一個cmder很奇怪的問題,一個剛初始化的的本地儲存庫原則上應該是要顯示(master),如果有任何修改,會變為紅色的(master),直到這次的改動被commit為止。

一個剛建立的本地儲存庫沒有任何分支、上游,都還是顯示為(master -> origin),且無論是否更動內容,都顯示為白色;原本以為是git或者其他相關軟體的問題,都移除後重新建立測式本地儲存庫,在剛初始完儲存庫後就出現了這個異常的狀況。
6DGumzj.png-修正git在cmder總是顯示master -> origin的異常

Environment

Cmder: v1.3.5(mini)
git: 2.17.0
作業系統: Windows 10

Solution

Cmder\vendor\clink-completions\git_prompt.lua中有一行:
clink.prompt.value = clink.prompt.value:gsub(escape(branch), '%1 -> '..text)
找到text的來源是:
git.get_config(git_dir, 'branch "'..branch..'"', 'remote') or 'origin'

似乎無論如何都會幫你帶上最後的text,無論是有沒有remote或上游。 所以把%1後面的註解掉變成:
clink.prompt.value = clink.prompt.value:gsub(escape(branch), '%1')
就不會出現後面的 -> origin了。

留言

  1. 感謝大大解決了我的問題,最近剛碰git,很疑惑為什麼會是(master -> origin),原來是這個的關係。
    想請問一下,這樣做會不會有甚麼副作用呢?

    回覆刪除
    回覆
    1. 可能會造成如果真的有遠端分支無法正確顯示吧,我發現這個問題之後並沒有去修改,因為cmder後續的版本並沒有對此進行修正,對於Git使用上也沒有任何影響,所以我就讓它這樣繼續顯示了。

      刪除

張貼留言