【问题标题】:How to add split Git diff hunk from cygwin using Windows editor如何使用 Windows 编辑器从 cygwin 添加拆分 Git diff hunk
【发布时间】:2014-08-06 22:31:09
【问题描述】:

我在做git add -p 时需要拆分一个大块。 但是交互过程中的e 选项不起作用。我将解释为什么它不起作用并询问我可以做些什么来使它起作用。

所以我的大块头可能看起来像下面的代码。从其他研究中我了解到我应该使用e 选项,然后我的编辑会提出大块的行,我可以删除我不想要的。

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

显然我想只提交 fat 方法,而将惰性方法留给另一个提交。

问题是我正在从 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 像两个非混合的东西一样混合的时代之一,但我想要一个能够弥合这一差距的解决方案,而不是必须使用一些基于 Cygwin 的编辑器。

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

【问题讨论】:

    标签: windows git cygwin


    【解决方案1】:

    我建议设置 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 - 输出绝对路径

    【讨论】:

    • 到目前为止这看起来不错。我发现帮助脚本最后不应该有 CRLF。 LF没问题。我只通过设置 VISUAL 并输入 $VISUAL testfile.c 对此进行了测试,因为我没有任何 Git 活动可以尝试。当我成功时,我会接受答案。
    • 好吧,任何 bash 脚本都不应包含 Windows 的行尾 (CRLF)。或者最好不要在 Cygwin 中使用 Windows 行尾。它在许多地方引起了问题。甚至 .bashrc 也会失败。仅使用 LF。
    • AND:你的文本没有包含任何行尾,所以我最终使用 CRLF 的事实当然不是你的错。我刚刚发现我的 Eclipse 配置显然默认为 CRLF。 Eclipse/CDT 似乎在 Windows 上解决了许多这些小痛点。 Notepad2 至少使行尾高度可见且易于更改。
    • 这也是选择正确的工具来完成任务。 Eclipse 是复杂的 IDE,因此它不是创建一个小的 shell 脚本的正确工具。我猜,行尾取决于那里的项目设置,而且您并没有为一个小的 shell 脚本创建新项目。程序员的文本编辑器(在您的情况下为 Notepad2)是最好的工具。当然,这并不意味着您不能在 Eclipse 中创建小型 shell 脚本。
    • 如果它适合您,请告诉我,以便在出现问题时更正我的答案。
    猜你喜欢
    • 2012-05-30
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2014-09-24
    • 2017-04-04
    • 1970-01-01
    相关资源
    最近更新 更多