Windows で Gitを試しています。「git commit」を試したところ、次のエラーが発生しました:
端末はダムですが、VISUAL も EDITOR も定義されていません。-m または -F オプションを使用してメッセージを提供してください。
そこで、EDITORという環境変数が必要だと分かりました。問題ありませんでした。メモ帳を指すように設定しました。ほぼうまくいきました。デフォルトのコミットメッセージはメモ帳で開きます。しかし、メモ帳は裸の改行をサポートしていません。私は外に出てメモ帳++%EDITOR%
しかし、Notepad++ をGit で期待どおりに動作するように設定する方法がわかりません。
私は Notepad++ にこだわっているわけではありません。現時点では、どのエディタを使用するかは気にしません。コマンドラインではなくエディタでコミット メッセージを入力できるようにしたいだけです( を使用-m
)。
Windows で Git を使用している皆さん、コミット メッセージを編集するためにどのツールを使用していますか? また、それを機能させるには何をする必要がありましたか?
ベストアンサー1
2015年9月更新(6年後)
のgit-for-Windows の最新リリース (2.5.3)以下が含まれるようになりました:
を設定することで
git config core.editor notepad
、ユーザーはnotepad.exe
デフォルトのエディタとして使えるようになりました.
設定はgit config format.commitMessageColumns 72
メモ帳ラッパーによって取得され、ユーザーが編集した後にコミット メッセージが行折り返されます。
見るコミット 69b301bによるヨハネス・シンデリン(dscho
)。
また、Git 2.16 (2018 年第 1 四半期) では、エディターが非表示のウィンドウやわかりにくい場所で開かれてユーザーが迷子になる場合に備えて、エディターを起動するときにユーザーが編集を終了するまで待機していることをユーザーに知らせるメッセージが表示されます。
見るコミット abfb04d(2017年12月7日)コミット a64f213(2017年11月29日)ラース・シュナイダー ( larsxschneider
).
協力者:浜野ジュニオ(gitster
)(合併者:
ジュニオ・C・ハマノ -- gitster
--でコミット 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 シェルからは機能しません。
(core.editor 構成メカニズムでは、" " を含むスクリプトはstart /WAIT...
機能せず、新しい DOS ウィンドウを開くだけです)
ベネットの答えスクリプトの追加を避け、単純な引用符で囲んだプログラム自体を直接参照する可能性について言及しています。スラッシュの方向に注意してください。パス名でフォルダーを区切るために使用し/
ないでください\
。
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
。
実際の解決策 (スクリプトを使用) は、次のことを認識することでした。
構成ファイルで参照されているのは、実際には/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
、git rebase -i ...
DOS または Git Shell から ' ' を実行したりできます。
ボット コマンドは、notepad++ の新しいインスタンスをトリガーし ( -multiInst
' オプション)、そのインスタンスが閉じられるまで待機してから続行します。
'/'のみを使用し、\
'.は使用していないことに注意してください。そして、オプション 2 を使用して msysgit をインストールしました。(git\bin
ディレクトリを環境変数に追加しますPATH
が、一部の組み込み Windows ツールを上書きしないでください)
notepad++ ラッパーが .bat という名前であるという事実は重要ではありません。ただし
、'npp.sh' という名前を付けて、ディレクトリ (または PATH 環境変数によって参照される任意のディレクトリ) に配置する方が適切[git]\cmd
です。
参照:
- ビジュアル diff プログラムで 'git diff' 出力を表示するにはどうすればいいですか?一般理論については
- msysgit / gitk で DiffMerge を設定するにはどうすればよいですか?外部ツールの別の例(DiffMerge、WinMerge)
N++が空のファイルを開くだけで、gitがコミットメッセージを受け取らないという問題がある場合は、「メッセージが空のためコミットを中止します":
.bat
または.sh
ファイルを次のように変更します:
"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>.
これにより、notepad++ は空の新しいファイルではなく、一時コミット ファイルを開くようになります。