普通の commit なら C-x v v で Emacs の中で編集できるんですが、git commit --amend したい場合など、shell-mode 内だとエディタが起動できないってエラーになります。
そんなときのために ~/.emacs や ~/.emacs.d/init.el に以下を入れておきます。
(server-start) (setenv "EDITOR" (concat (getenv "emacs_dir") "/bin/emacsclient.exe"))
スラッシュでなくバックスラッシュ(円記号)を使用するとうまくいきません。
環境変数 emacs_dir は Windows 版の Emacs でしか設定されないようです。
shell-mode 以外に、async-shell-command (M-&) でも git を実行できます。
shell-command (M-!) で実行すると Emacs が止まってしまいます。
編集後は save-buffer (C-x C-s) してから kill-buffer (C-x C-k) です。
キャンセルする場合は save-buffer せず kill-buffer を強行(バッファがモディファイされてるけどエニウェイキルるの? に yes)してください。