簡體   English   中英

如何設置編輯器以在 Windows 上使用 Git?

[英]How can I set up an editor to work with Git on Windows?

我正在Windows 上試用 Git 我到了嘗試“git commit”的地步,但出現了這個錯誤:

終端是啞的,但沒有定義 VISUAL 或 EDITOR。 請使用 -m 或 -F 選項提供消息。

所以我發現我需要一個名為 EDITOR 的環境變量。 沒問題。 我將其設置為指向記事本。 這幾乎奏效了。 默認提交消息在記事本中打開。 但記事本不支持裸換行。 我出去拿了Notepad++ ,但我不知道如何將 Notepad++ 設置為%EDITOR% ,以便它可以按預期與 Git 一起使用。

我沒有嫁給記事本++。 在這一點上,我不介意我使用什么編輯器。 我只想能夠在編輯器而不是命令行(使用-m )中輸入提交消息

那些在 Windows 上使用 Git 的人:您使用什么工具來編輯您的提交消息,您需要做什么才能使其工作?

2015 年 9 月更新(6 年后)

git-for-Windows (2.5.3)最新版本現在包括:

通過配置git config core.editor notepad ,用戶現在可以使用notepad.exe作為他們的默認編輯器
配置git config format.commitMessageColumns 72將由記事本包裝器拾取並在用戶編輯提交消息后換行。

請參閱Johannes Schindelin ( dscho ) 的commit 69b301b

並且 Git 2.16(2018 年第一季度)將顯示一條消息,告訴用戶它在生成編輯器時正在等待用戶完成編輯,以防編輯器打開到隱藏窗口或某個不明顯的地方並且用戶迷路了。

提交abfb04d (2017年12月7日),並提交a64f213 (2017年11月29日)由拉爾斯·施奈德( larsxschneider
幫助者: Junio C gitster ( gitster )
(由Junio C gitster合並-- gitster -- in commit 0c69a13 ,2017 年 12 月 19 日)

launch_editor() :表示 Git 等待用戶輸入

當圖形GIT_EDITOR由打開並等待用戶輸入的 Git 命令(例如“ git rebase -i ”)產生時,編輯器窗口可能會被其他窗口遮擋。
用戶可能會一直盯着原始的 Git 終端窗口,甚至沒有意識到他/她需要在 Git 繼續之前與另一個窗口進行交互。 對於這個用戶來說,Git 似乎掛了。

如果終端支持擦除最后一行,則在原始終端打印一條 Git 正在等待編輯器輸入的消息,並在編輯器返回時將其刪除


原答案

我剛剛用 git 版本 1.6.2.msysgit.0.186.gf7512 和 Notepad++5.3.1 對其進行了測試

我更喜歡不必設置 EDITOR 變量,所以我嘗試了:

git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"

這總是給出:

C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.

如果我定義一個 npp.bat 包括:

"c:\Program Files\Notepad++\notepad++.exe" %*

我輸入:

C:\prog\git>git config --global core.editor C:\prog\git\npp.bat

它只適用於 DOS 會話,而不適用於 git shell
(與 core.editor 配置機制不同,帶有“ start /WAIT... ”的腳本將不起作用,而只能打開一個新的 DOS 窗口)


Bennett 的回答提到了避免添加腳本的可能性,而是在簡單的引號之間直接引用程序本身。 注意斜線的方向! 使用/ NOT \\分隔路徑名中的文件夾!

git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

或者,如果您使用的是 64 位系統:

git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

但我更喜歡使用腳本(見下文):這樣我就可以使用不同的路徑或不同的選項,而無需再次注冊git config


實際的解決方案(使用腳本)是要意識到:
您在配置文件中所指的實際上是一個 shell ( /bin/sh ) 腳本,而不是 DOS 腳本。

那么有效的是:

C:\prog\git>git config --global core.editor C:/prog/git/npp.bat

使用C:/prog/git/npp.bat

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

要么

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

通過該設置,我可以從 DOS 或 Git Shell 執行“ git config --global --edit ”,或者我可以從 DOS 或 Git Shell 執行“ git rebase -i ... ”。
Bot 命令將觸發 notepad++ 的新實例(因此使用-multiInst ' 選項),並在繼續之前等待該實例關閉。

請注意,我只使用“/”,而不是“ \\ ”。 使用選項 2 安裝了 msysgit。 (將git\\bin目錄添加到PATH環境變量,但沒有覆蓋一些內置的 Windows 工具)

notepad++ 包裝器稱為 .bat 的事實並不重要。
最好將其命名為“npp.sh”並將其放在[git]\\cmd目錄中(或在您的 PATH 環境變量引用的任何目錄中)。


也可以看看:


lightfire228 在評論中補充道:

對於任何遇到 N++ 只是打開一個空白文件而 git 不接受您的提交消息的問題的人,請參閱“由於空消息而中止提交”:將您的.bat.sh文件更改為:

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

這將告訴記事本++打開臨時提交文件,而不是一個空白的新文件。

基於Darren 的回答,要使用 Notepad++,您可以簡單地執行此操作(全部在一行上):

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

顯然, C:/Program Files/Notepad++/notepad++.exe部分應該是系統上 Notepad++ 可執行文件的路徑。 例如,它可能是C:/Program Files (x86)/Notepad++/notepad++.exe

它對我來說就像一種魅力。

文章如何將 Notepad++ 設置為提交的默認 Git 編輯器而不是 Vim解釋了命令的參數。

無論如何,我一直在玩這個,發現以下對我來說很好用:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

我認為 CMD 不喜歡單引號,因此您必須使用雙引號“指定嵌入的空格字符串參數”。

另一方面,Cygwin(我認為它是 Git 的 Bash 的底層平台)同時喜歡'" ;你可以指定一個類似 CMD 的路徑,使用/而不是\\ ,只要字符串被引用,即在這種情況下,使用單引號。

-m覆蓋/指示使用多個編輯器,並且不需要在末尾添加%*

編輯:更新到 Vim 7.3 后,我得出的結論是,最簡潔、最簡單的方法是:

  1. 將 Vim 的主文件夾添加到您的路徑(右鍵單擊我的電腦屬性高級環境變量

  2. 運行這個:

     git config --global core.editor "gvim --nofork '%*'"

如果你這樣做,那么我很確定它也適用於 Cygwin。

原答案:

即使有幾個與 Vim 相關的答案,我也無法在 Windows 下使用 gVim(同時不使用批處理文件或 %EDITOR% 或 Cygwin)。

我最終得出的結論既漂亮又干凈,並借鑒了這里的一些解決方案:

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

我花了一段時間的一個問題是這些不是 Windows 風格的反斜杠。 它們是正常的正斜杠。

Notepad++ 工作得很好,盡管我選擇堅持使用 Notepad、-m,甚至有時使用內置的“編輯”。

您在使用 Notepad++ 時遇到的問題與 Git 如何啟動編輯器可執行文件有關。 我對此的解決方案是將環境變量EDITOR設置為批處理文件,而不是實際的編輯器可執行文件,它執行以下操作:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAIT告訴命令行會話暫停,直到應用程序退出,這樣你就可以編輯到你想要的內容,而 Git 會高興地等待你。 %* 將批處理文件的所有參數傳遞給 Notepad++。

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

寫字板

我很高興使用 Vim,但由於我試圖將 Git 介紹給公司,我想要一些我們都擁有的東西,並且發現寫字板似乎工作正常(即 Git 確實等到您完成編輯並關閉窗戶)。

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

那是在 msysgit 上使用 Git Bash; 我還沒有從 Windows 命令提示符嘗試過(如果這有什么不同的話)。

對於Atom你可以做

git config --global core.editor "atom --wait"

和類似的Visual Studio Code

git config --global core.editor "code --wait"

這將打開一個AtomVisual Studio Code窗口供您提交,

或者對於崇高的文本

git config --global core.editor "subl -n -w"

我也在 Windows 上使用 Cygwin,但使用 gVim(與基於終端的Vim相反)。

為了使這項工作,我做了以下工作:

  1. 創建了一個單行批處理文件(名為git_editor.bat ),其中包含以下內容: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. git_editor.bat放在我的PATH
  3. 設置GIT_EDITOR=git_editor.bat

完成此操作后, git commit等將正確調用 gVim 可執行文件。

注意 1: gVim 的--nofork選項確保它阻塞直到提交消息被寫入。

注意 2:如果路徑中有空格,則 gVim 路徑周圍的引號是必需的。

注意 3: 需要在 "%*" 周圍加上引號,以防 Git 傳遞帶空格的文件路徑。

感謝 Stack Overflow 社區 ... 和一些研究,我能夠讓我最喜歡的編輯器EditPad Pro作為核心編輯器使用 msysgit 1.7.5.GIT 和 TortoiseGit v1.7.3.0 在 Windows XP SP3 上工作。 ..

按照上面的建議,我為代碼編輯器添加了 Bash 腳本的路徑...

git config --global core.editor c:/msysgit/cmd/epp.sh

然而,在上述解決方案的幾次失敗嘗試之后......我終於能夠讓它工作。 根據 EditPad Pro 的文檔,添加“/newinstance”標志將允許 shell 等待編輯器輸入...

' /newinstance ' 標志在我的案例中是關鍵......

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"

編輯 c:\\Users\\YourUser 文件夾中的 .gitconfig 文件並添加:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'

這是更大問題的一個症狀。 值得注意的是,您有一些設置TERM=dumb 其他不能正常工作的東西是less命令,它表示您沒有功能齊全的終端。

這似乎最常見的原因是將 TERM 設置為全局 Windows 環境變量中的某些內容。 對我來說,當我安裝Strawberry Perl時出現了這個問題,一些關於這個問題的信息是關於這個問題msysgit 錯誤以及幾個解決方案。

第一個解決方案是通過添加以下內容在您的 ~/.bashrc 中修復它:

export TERM=msys

您可以從 Git Bash 提示符執行此操作,如下所示:

echo "export TERM=msys" >> ~/.bashrc

另一個解決方案,最終是我所做的,因為我不關心 Strawberry Perl 將TERM=dumb添加到我的環境設置的原因,是按照對 msysgit 錯誤報告的評論中的指示去刪除TERM=dumb

控制面板/系統/高級/環境變量...(或類似的,取決於您的 Windows 版本)是在 Windows 上設置粘性環境變量的地方。 默認情況下,未設置 TERM。 如果在那里設置了 TERM,那么您(或您安裝的程序之一 - 例如 Strawberry Perl)已經設置了它。 刪除該設置,你應該沒問題。

類似地,如果您使用 Strawberry Perl 並關心CPAN客戶端或類似的東西,您可以單獨保留TERM=dumb並在您的 ~/.bashrc 文件中使用unset TERM ,這將具有與上述設置顯式術語類似的效果。

當然,所有其他解決方案都是正確的,因為您可以使用git config --global core.editor $MYFAVORITEEDITOR來確保 Git 在需要為您啟動一個編輯器時使用您最喜歡的編輯器。

Vim/gVim對我來說效果很好。

>echo %EDITOR%

c:\Vim\Vim71\vim.exe

我在多個平台上使用 Git,而且我喜歡在所有平台上使用相同的 Git 設置。 (事實上​​,我所有的配置文件都在 Git 的發布控制之下,並在每台機器上放置了一個 Git 存儲庫克隆。)我想出的解決方案是這樣的:

我將我的編輯器設置為giteditor

git config --global core.editor giteditor

然后我創建了一個名為giteditor的符號鏈接,它在我的PATH 中 (我有一個個人bin目錄,但在PATH 中的任何地方都有效。)該鏈接指向我當前選擇的編輯器。 在不同的機器和不同的平台上,我使用不同的編輯器,所以這意味着我不必更改我的通用 Git 配置( .gitconfig ),只需更改 giteditor指向的鏈接。

符號鏈接由我所知道的每個操作系統處理,盡管它們可能使用不同的命令。 對於 Linux,您使用ln -s 對於 Windows,您使用cmd內置mklink 它們有不同的語法(你應該查一下),但它們的工作方式都是一樣的,真​​的。

我讓 PortableGit 1.6 工作正常,但在升級到 PortableGit 1.7 Windows 版本后,我遇到了問題。 一些 Git 命令可以很好地打開 Notepad++.exe,但有些則不能,尤其是Git rebase 的行為不同。

問題是一些命令運行 Windows cmd 進程,而一些命令使用 Unix cmd 進程。 我想為 Notepad++ 編輯器提供啟動屬性,所以我需要一個自定義腳本。 我的解決辦法是這樣。

  1. 創建腳本以運行適當的文本編輯器。 該腳本看起來很奇怪,但它同時處理 Windows 和 Unix 變體。

    c:/PortableGit/cmd/git-editor.bat

     #!/bin/sh # Open a new instance function doUnix() { "c:\\program files\\notepad++\\notepad++.exe" -multiInst -nosession -notabbar $* exit } doUnix $* :WINCALL "c:\\program files\\notepad++\\notepad++.exe" -multiInst -nosession -notabbar %*
  2. 設置全局 core.editor 變量

    腳本已保存到 git/cmd 文件夾,因此它已經在 gitconsole 路徑中。 這是強制性的,因為完整路徑可能無法正常工作。

     git config --global core.editor "git-editor.bat"

現在我可以運行git commit -agit rebase -i master命令。 如果您在 Git Windows 工具中遇到問題,請嘗試一下。

根據VonC 的建議,這對我有用(讓我發瘋):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

省略-wait可能會導致問題,尤其是當您使用Gerrit並更改必須手動復制到提交消息底部的 id 時。

我需要執行以下兩項操作才能讓 Git 在 Windows 中啟動 Notepad++:

  • 將以下內容添加到 .gitconfig:

     editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
  • 修改快捷方式以啟動 Git Bash shell 以管理員身份運行,然后使用它來啟動 Git Bash shell。 我猜測上下文菜單條目“Git Bash here”沒有以所需的權限啟動 Notepad++。

做完以上兩件事后,它起作用了。

我在 Windows 上使用Cygwin ,所以我使用:

export EDITOR="emacs -nw"

-nw用於no-windows ,即告訴 Emacs 不要嘗試使用X Window

Emacs 鍵綁定在 Windows shell 中對我不起作用,所以我只會在 Cygwin shell 中使用它......(推薦使用rxvt 。)

這是我使用Geany作為 Git 編輯器的設置:

git config --global core.editor C:/path/to/geany.bat

geany.bat包含以下內容:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

它適用於 DOS 控制台和 msysgit。

我很難讓 Git 與WordPadKomodo Edit以及我提供的幾乎所有其他編輯器合作。 大多數打開進行編輯,但 Git 顯然不會等待保存/關閉發生。

作為拐杖,我一直在做即

git commit -m "Fixed the LoadAll method"

保持事物的運轉。 它往往使我的提交消息比它們應該的要短一些,但顯然在 Windows 版本的 Git 上還有一些工作要做。

GitGUI 也沒有那么糟糕。 這需要一點定位,但在那之后,它工作得相當好。

我更喜歡使用 Emacs。 設置它可能有點棘手。

  1. 下載 Emacs 並將其解壓縮到c:\\emacs之類的地方。
  2. 運行c:\\emacs\\bin\\addpm.exe 如果您使用的是 Windows Vista 或更高版本,則需要右鍵單擊並“以管理員身份運行”。 這會將可執行文件放在您的路徑中。
  3. .emacs文件中的某處添加(server-start) 有關將.emacs文件放在哪里的建議,請參閱Emacs Windows 常見問題解答
  4. git config --global core.editor emacsclientw

Git 現在將在現有 Emacs 進程中打開文件。 您必須從c:\\emacs\\bin\\runemacs.exe手動運行該現有進程。

如果路徑中有空格,Git 似乎找不到編輯器。 因此,您必須將帕特里克回答中提到的批處理文件放入非空白路徑。

我剛剛遇到了同樣的問題,並找到了不同的解決方案。 我得到

error: There was a problem with the editor 'ec'

我的路徑上有VISUAL=ec和一個名為ec.bat的批處理文件,其中包含一行:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

這讓我可以使用ec <filename>從命令行編輯文件,並且設置VISUAL意味着大多數 unixy 程序也可以選擇它。 不過,Git 似乎以與我的其他命令不同的方式搜索路徑 - 當我在Process Monitor 中查看git commit ,我看到它在路徑上的每個文件夾中查找ecec.exe ,但沒有查找ec.bat 我添加了另一個環境變量( GIT_EDITOR=ec.bat ),一切都很好。

我正在使用 GitHub for Windows,這是一個不錯的視覺選項。 但我也更喜歡命令行,所以當我在 Git shell 中打開存儲庫時,為了使它工作,我只需設置以下內容:

git config --global core.editor vim

這很好用。

這適用於 PowerShell 和cmder 1.2(與 PowerShell 一起使用時)。 在文件~/.gitconfig

[core]
    editor = 'c:/program files/sublime text 3/subl.exe' -w

如何讓 Sublime Text 成為 Git 的默認編輯器?

我在這里找到了一個非常簡單的解決方案 - 盡管您必須復制作者提供的“subl”文件的路徑中可能存在錯誤。

我正在運行 Windows 7 x64,我必須將“subl”文件放在我的/Git/cmd/文件夾中才能使其工作。

不過,它就像一種魅力。

Atom 和 Windows 10

  1. 我右鍵單擊桌面上的 Atom 圖標,然后單擊屬性。

  2. 復制“開始於”位置路徑

  3. 使用 Windows 資源管理器查看那里並找到“atom.exe”。

  4. 我在 Git Bash 中輸入:

     git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"

注意:我將所有\\更改為/ 我在我的主目錄中創建了一個 .bashrc 並使用/來設置我的主目錄並且它起作用了,所以我認為/將是要走的路。

我設法通過使用引號和/設置 EDITOR 變量來使環境版本正常工作:

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"

添加 sublime git config --global core.editor "'C:\\Program Files\\Sublime Text 3\\sublime_text.exe'"

我使用GIT_EDITOR變量和notepad2作為編輯器解決了類似的問題。

解決方案一:將環境變量GIT_EDITOR設置為C:/tools/notepad2.exe 這很好用,但 git 會抱怨提交消息是否包含非 ASCII 字符。

解決方案 2:將GIT_EDITOR設置為C:/tools/notepad2.exe //utf8 注意程序開關前面的雙斜線。 順便說一句: -utf8也可以。

假設您想將VsCode配置為您的編輯器。 請執行下列操作:

將以下行添加到您的.gitconfig文件中:

.gitconfig文件的默認位置是C:\Users\USER_NAME\.gitconfig

[core]
  editor = code -w -n
[diff]
  tool = vscode
[difftool "vscode"]
  cmd = code -w -n --diff $LOCAL $REMOTE
[merge]
  tool = vscode
[mergetool "vscode"]
  cmd = code -w -n $MERGED

筆記:

  • -w是強制性的,告訴git等待vscode加載。
  • -n是可選的,它告訴git在新窗口中打開vscode

如果您想在 Windows 中配置編輯器的自定義路徑:

您需要將單詞code替換為 VsCode 的“.exe”路徑

例如:

[core]
  editor = "'C:/Users/Tal/AppData/Local/Programs/Microsoft VS Code/Code.exe'" -w -n
[diff]
  tool = vscode
[difftool "vscode"]
  cmd = "'C:/Users/Tal/AppData/Local/Programs/Microsoft VS Code/Code.exe'" -w -n --diff $LOCAL $REMOTE
[merge]
  tool = vscode
[mergetool "vscode"]
  cmd = "'C:/Users/Tal/AppData/Local/Programs/Microsoft VS Code/Code.exe'" -w -n $MERGED

筆記:

  • 您需要用單引號''將路徑括起來。
  • 路徑中的斜杠應該是正斜杠/

或者另一個例子:

[core]
    editor = \"C:\\Users\\Tal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\" -w -n

[diff]
    tool = vscode
[difftool "vscode"]
    cmd = \"C:\\Users\\Tal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\" -w -n --diff $LOCAL $REMOTE

[merge]
    tool = vscode
[mergetool "vscode"]
    cmd = \"C:\\Users\\Tal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\" -w -n $MERGED

更新:

VsCode 現在支持“3 路合並”! 更新在1.69.01.70.0版本中完成。 所以現在你可以啟用 VsCode “mergetool” 來查看 3 路合並。

為此,您需要更新該行:

[mergetool "vscode"]
      cmd = code -w -n $MERGED

使用新行:

[mergetool "vscode"]
      cmd = code -w -n --merge $REMOTE $LOCAL $BASE $MERGED

我正在Windows上試用Git 我到了嘗試“ git commit”的地步,並且出現了這個錯誤:

終端很笨,但沒有定義VISUAL或EDITOR。 請使用-m或-F選項提供消息。

所以我發現我需要一個名為EDITOR的環境變量。 沒問題。 我將其設置為指向記事本。 幾乎成功了。 默認的提交消息在記事本中打開。 但是記事本不支持裸線換行。 我出去了,得到了Notepad ++ ,但是我不知道如何將Notepad ++設置為%EDITOR% ,使其可以按預期與Git一起使用。

我沒有嫁給Notepad ++。 在這一點上,我不介意我使用什么編輯器。 我只希望能夠在編輯器中而不是在命令行(帶有-m )中鍵入提交消息

那些在Windows上使用Git的人:您使用什么工具來編輯提交消息,並且需要做什么才能使其生效?

我正在Windows上試用Git 我到了嘗試“ git commit”的地步,並且出現了這個錯誤:

終端很笨,但沒有定義VISUAL或EDITOR。 請使用-m或-F選項提供消息。

所以我發現我需要一個名為EDITOR的環境變量。 沒問題。 我將其設置為指向記事本。 幾乎成功了。 默認的提交消息在記事本中打開。 但是記事本不支持裸線換行。 我出去了,得到了Notepad ++ ,但是我不知道如何以這種方式將Notepad ++設置為%EDITOR% ,使其可以按預期與Git一起使用。

我沒有嫁給Notepad ++。 在這一點上,我不介意使用什么編輯器。 我只希望能夠在編輯器中而不是在命令行(帶有-m )中鍵入提交消息

那些在Windows上使用Git的人:您使用什么工具來編輯提交消息,並且需要做什么才能使其生效?

這是 Cygwin 的解決方案:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. 如果沒有路徑,則不通過路徑

  2. 如果路徑為空,則傳遞空路徑

  3. 如果路徑不為空,則轉換為 Windows 格式。

然后我設置這些變量:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR 允許腳本與 Git 一起工作

  2. GIT_EDITOR 允許腳本使用Hub 命令

來源

那些在 Windows 上使用 Git 的人:您使用什么工具來編輯您的提交消息,您需要做什么才能使其工作?

我發現在 WindowsLinux 中,作為git 編輯器通用代碼編輯器最有用的工具是Sublime Text 3 它工作得非常好,但需要一些設置才能使其恰到好處,所以我在這里完整地記錄了這一點:

關於我的主編輯器的旁注:對於大型項目,我使用 Eclipse 作為我的主要編輯器,當我需要使用它的高級功能(如多光標模式、垂直/列)時,Sublime Text 3 作為我的 git 編輯器和附加文件編輯器選擇模式等。對於中小型項目,我只使用 Sublime Text 3。 有關 Eclipse 的設置說明,請在此處查看我的 PDF 文檔

當使用遠程安裝的homedrive(samba共享,nfs,...)時,你的~/.git文件夾是共享的所有系統,這可能導致幾個問題。 因此,我更喜歡使用腳本來確定正確系統的正確編輯器:

#!/usr/bin/perl
# Detect which system I'm on and choose the right editor
$unamea = `uname -a`;
if($unamea =~ /mingw/i){
    if($unamea =~ /devsystem/i){#Check hostname
        exec('C:\Program Files (x86)\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
    }
    if($unamea =~ /testsystem/i){
        exec('C:\Program Files\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
    }
}
$MCEDIT=`which mcedit`;
if($MCEDIT =~ /mcedit/){
    exec($MCEDIT, @ARGV);
}
$NANO=`which nano`;
if($NANO =~ /nano/){
    exec($NANO, @ARGV);
}
die "You don't have a suitable editor!\n";

有人可能會考慮使用普通的shell腳本,但我使用的是perl,因為perl隨msysgit一起提供,而你的unixoid系統也會提供一個。 將腳本放在/home/username/bin ,該腳本應添加到.bashrc.profile PATH中。 一旦添加了git config --global core.editor giteditor.pl ,無論你身在何處,你都擁有正確的編輯器。

我只是直接使用TortoiseGit 它與我的PuTTY公鑰完美集成。

它有一個完美的提交消息編輯器。

暫無
暫無

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

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