如何使用Windows编辑器从cygwin添加分割Git diff hunk

我需要在做git add -p时候分割一个块。 但交互期间的e选项不起作用。 我将解释为什么它不工作,并询问我能做些什么来使其工作。

所以我的大块可能看起来像下面的代码。 从其他研究中我已经知道,我应该使用e选项,然后我的编辑会拿出大块的线,我可以删除我不想要的。

 + virtual bool fat() const { + return true; + } + virtual bool lazy() const { + return true; + } 

很明显,我想提交只是脂肪的方法,并保留另一个提交懒惰的方法。

问题是,我从Cygwin运行Git,并且编辑器设置如下:

 export EDITOR=/cygdrive/c/csm/notepad2/Notepad2.exe 

顺便说一句,当我提交消息,这完美启动编辑器。

当我检查编辑器的命令行时,它看起来像

 c:\csm\notepad2\Notepad2.exe /home/csm/path/to/my/code/.git/addp-hunk-edit.diff 

显然这是Windows和Cygwin像两种非混合的东西混合在一起的时代之一,但是我想要一个解决scheme来弥合这个差距,而不是使用一些基于Cygwin的编辑器。

我相信cygwin和windows git-path混淆的问题与我的相反,因为我使用Cygwin附带的Git,并且希望使用Windows辅助工具,而该问题旨在将Windows原生的Git与一个Cygwin shell环境。

我会建议设置Git的编辑器,而不是全局系统的编辑器,但它应该适用于:

 git config --global core.editor ~/bin/git-editor.sh 

并创建包含如下内容的~/bin/git-editor.sh

 /cygdrive/c/csm/notepad2/Notepad2.exe "`cygpath -w -a \"$*\"`" 

cygpath在Windows和Unix格式之间转换路径。

  • -w – 从Unix转换到Windows格式
  • -a – 输出绝对路径