解决Windows下Git Shell编辑器问题

前言 


最近开始重新用Git Shell,因为中途编辑器从之前的UltraEdit换成了Notepad++,所以在用git commit命令提交时,出现了一个诡异的问题:
直接返回“Aborting commit due to empty commit message.” 
如图示:



而之前的所有git commit,Git Shell首先会阻塞打开UE,直到输入log完成后保存,然后commit成功。现在情况是打开Notepad++就直接返回这句话,我郁闷不已,当时是加 -m 选项完成。

今晚突然发现问题了所在,记录下。


发现过程


首先我Notepad++是没有打开的,然后今晚直接git commit提交,Git Shell居然阻塞住,并没有出现前面说的返回“empty commit message”情况,然后我输入log后保存,顺利commit。但是,当我再次进行commit时,又出现了上面的问题。。。

之后,我连续commit,冒出以下提示框:



此时,Git Shell的画面:



之后,我点否。。再把整个Notepad++给全关掉,再次git commit,又成功阻塞住,提交log后保存,顺利commit。



Ok,根据提示框,想了下前后两次的差异,把整个问题发现的过程缕一下:

(一):Notepad++(未开)  ---->  第一次commit成功  ---->  关掉保存的log文件,但Notepad++并未关闭  ---->  第二次commit失败,log文件未关闭;
(二):Notepad++(打开) ,log文件未关闭  ---->  第三次commit失败,出现提示框  ---->  关掉整个Notepad++  ---->  第四次commit成功;

中间的差异就是Notepad++在commit时有没有被打开,如果没被打开,则commit成功,否则,返回“Aborting commit due to empty commit message.”,commit失败


原因搜索

(在网上搜索,发现了问题可能原因)

git commit的工作原理:

  1. 创建新的编辑器进程;
  2. 将COMMIT_EDITMSG文件传递给这个进程并阻塞等待进程结束;
  3. 读取 COMMIT_EDITMSG 文件。


而我遇到的情况是,运行COMMIT_EDITMSG文件时并不一定会创建新的编辑器进程----比如上面已经在运行着的Notepad++(可以只关闭页面),这时Git Shell将会直接使用这个进程打开 COMMIT_EDITMSG 文件(新增一个页面),这样Git就不会阻塞,直接返回Empty Log信息,并commit失败。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值