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 在 vim 中打开文件。对吗?
@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/<file-a> b/<file-b>
index <short-hash-a>..<short-hash-b> 100644
--- a/<file-a>
+++ b/<file-b>
<changes>
我有点困惑,我的文件中有内容更改,但我不记得更改文件的权限...这是 Windows 中的怪癖吗?
@Atreyu 在您的情况下,如果您只看到 100644 和实际内容更改,这不是权限问题(我修改了我的答案以使其更清楚)。关于 Windows 上的权限,参见插图***.com/a/41310550/6309。以上是关于Windows 上的 git bash shell“您编辑的块不适用”的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 Git for Windows 的 bash-shell 不将路径字符串转换为 Windows 路径?
使用 cygwin 和 git bash 在 Windows 10 上进行 Shell 脚本评估失败