Windows 上的 git bash shell“您编辑的块不适用”

Posted

技术标签:

【中文标题】Windows 上的 git bash shell“您编辑的块不适用”【英文标题】:git bash shell on Windows "Your edited hunk does not apply" 【发布时间】:2017-06-14 12:55:12 【问题描述】:

在使用命令时尝试手动编辑帅哥时遇到一个非常令人沮丧的错误:

git add -p

我已经浏览了该网站上的许多现有问题,包括this one 和this one。

我正试图手动编辑一个块,不做任何更改对 git 打开的文件进行手动编辑,但仍然收到错误“您编辑的块不适用” .

我认为这可能与 CRLF 与 LF EOL 字符有关。我在 Notepad++ 中编辑,我可以看到我所有的行尾都是 CRLF。我天真地试图将所有行尾更改为 LF,但无济于事。

我还可以看到所有上下文行都有前导空格,所以这也不是问题。此外,我有:

git --global core.autocrlf

设置为true

非常感谢任何帮助。


编辑:根据 VonC 的回答,在我的具体情况下,我有权限 + 内容差异。这是否仍然意味着我不能这样做:

git add -p

如果它只是一个权限差异,我理解为什么这不是必需的,并且必须删除交互选项;但在这种情况下,有没有办法仍然进行交互式add

【问题讨论】:

您能否给出导致此错误的命令和其他操作的确切顺序? 运行git add -p 后,我只需输入e 即可手动编辑一大块代码。 git 然后打开一个编辑文件来编辑大块。即使我关闭此编辑文件而不进行任何更改,我也会收到错误消息。 请编辑您的问题以包含此信息。您可能还想添加编辑代码的步骤。提供一个更具体的原始编辑示例也会很有帮助,然后再展示如何编辑大块。 另外,当你说“git 然后打开一个编辑文件”时,我假设你的意思是 git 在 vi​​m 中打开文件。对吗? @Code-Apprentice 我已将所有这些信息包含在我的问题中。请注意,我说 git 在 Notepad++ 中打开我的编辑文件(我的 .txt 文件的默认编辑器)。我还说即使没有对大块编辑文件进行任何更改,我也会收到错误。 【参考方案1】:

首先,将git --global core.autocrlf 设置为false。 然后再次克隆你的 repo,并检查 core.autocrlf 的值:

cd /path/to/new/clone
git config core.autocrlf

(没有 --global)

最后,再试一次你的git add -p(在你的新工作树中报告你的修改之后)。

关于hunk管理,另见“Unexpected result in git-diff”。


“您编辑的大块不适用”。

diff --git a/<file-a> b/<file-b> > 
index <short-hash-a>..<short-hash-b> 100644 
--- a/<file-a> 
+++ b/<file-b>
<changes>

如果没有更改(仅在许可范围内),在这种情况下添加“补丁”是没有意义的:您只需 git add 文件(没有 -p

但如果有变化,OP提到的问题“git add --interactive “Your edited hunk does not apply””仍然是参考。

【讨论】:

感谢您的回答!你说的我已经试过了。 core.autocrlf 的本地值在我的新克隆存储库中返回为 false,但在手动编辑模式下 git add -p 仍然返回相同的错误(同样没有对编辑文件进行任何更改)。 @Atreyu git diff -- afile 的结果是什么? (afile 你正在尝试的那个to add -p 我得到diff --git a/&lt;file-a&gt; b/&lt;file-b&gt; index &lt;short-hash-a&gt;..&lt;short-hash-b&gt; 100644 --- a/&lt;file-a&gt; +++ b/&lt;file-b&gt; &lt;changes&gt; 我有点困惑,我的文件中有内容更改,但我不记得更改文件的权限...这是 Windows 中的怪癖吗? @Atreyu 在您的情况下,如果您只看到 100644 和实际内容更改,这不是权限问题(我修改了我的答案以使其更清楚)。关于 Windows 上的权限,参见插图***.com/a/41310550/6309。

以上是关于Windows 上的 git bash shell“您编辑的块不适用”的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 Git for Windows 的 bash-shell 不将路径字符串转换为 Windows 路径?

使用 cygwin 和 git bash 在 Windows 10 上进行 Shell 脚本评估失败

如何在windows 安装git shell

mingw / git bash shell中的jRuby问题

windows资源管理器中配置右键bash here

如何在 Windows 上的 Git Bash 中退出“git diff”的结果? [复制]