我正在运行Mac OSX 10.9.4(Mavericks)并且拥有git版本2.8.2。我用一个全新的回购测试了这个。这是一个例子。
mkdir gitest
cd gitest
git init
echo "monkeyface" > monkey.txt
git commit -m "first commit"
echo "monkeyface farted" > monkeyfart.txt
git add .
git diff HEAD > new.patch
rm monkeyfart.txt
git reset --hard HEAD
git apply new.patch --check
>fatal: unrecognized input
任何想法导致了什么?它可以是我的.gitconfig文件中的任何内容吗?
[user]
name = myusername
email = myemail@mail.com
[color]
ui = always
[alias]
st = status -sb -uall
lg = log --decorate --pretty=oneline --abbrev-commit --graph
undocommit = reset --soft HEAD^
undopush = push -f origin HEAD^:master
[core]
editor = vim
excludesfile = ~/.gitignore_global
pager = less -r
[commit]
template = ~/.gitmessage.txt
[filter "media"]
clean = git-media-clean %f
smudge = git-media-smudge %f
更新:
虽然下面链接的答案提供了一些关于问题可能存在的想法,但我的问题特别隐藏在我的配置中,因为没有颜色参数传递给命令。这个答案是相关的,但我的问题和答案可能对可能遇到类似问题的其他人有所帮助。
答案 0 :(得分:15)
补丁文件中存在格式问题。要修复路径文件:
在notepad ++中打开补丁文件,然后进入以下两个菜单:
Encoding/Convert to UTF-8
Edit/EOL conversion/Unix (LF)
运行:
git apply --reject --whitespace=fix your_patch.patch
答案 1 :(得分:12)
您可能有一个未编码为UTF-8的文件。要在* nix系统(MacOS,Linux等)上修复它
iconv -f ascii -t utf-8 fix.patch -o fix_utf8.patch
对于Windows,您可以尝试:
Get-Content .\fix.patch | Set-Content -Encoding utf8 fix_utf8.patch
如果您的文件中可能已包含颜色代码,您可以尝试:
git apply --reject --whitespace myfile.patch
传入颜色参数似乎可以解决问题。
git diff HEAD --color=never > fix.patch
现在检查没有返回错误消息。
git apply fix.patch --check
从
更改我的.gitconfig文件[color]
ui = always
始终改为
[color]
ui = auto
解决了我的问题,因此我不必在传播到补丁文件时传递颜色选项。
更新:根据saurabheights答案,你甚至不需要brew link gnu-sed
,你可以用珍珠做到这一点。这也将从错误的补丁文件中删除颜色字符。可能有很多方法可以做到这一点。
perl -pe 's/\x1b.*?[mGKH]//g' bad.patch > good.patch
答案 2 :(得分:3)
我们尝试调试了几个小时。最终起作用的是:
VS Code
之类的编辑器打开补丁文件UTF-8
CRLF
更改为LF
git apply myPatch.patch
有效答案 3 :(得分:2)
对于那些已经有颜色代码补丁的人,试试这个: -
在 Ubuntu : -
brew link gnu-sed
在 Mac 上,使用以下命令安装gsed: -
cat incorrect.patch | gsed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" > correct.patch
并生成正确的补丁文件: -
09/03/2017 00:10 29 .bowerrc
09/03/2017 00:10 242 .editorconfig
09/03/2017 00:10 138 .gitignore
09/03/2017 00:13 321 bower
09/03/2017 00:13 198 bower.cmd
09/03/2017 00:10 118 bower.json
09/03/2017 00:13 335 cleancss
09/03/2017 00:13 212 cleancss.cmd
09/03/2017 00:14 962 config.xml
09/03/2017 00:13 333 dateformat
.....
09/03/2017 00:13 325 semver
09/03/2017 00:13 202 semver.cmd
09/03/2017 00:13 323 shjs
09/03/2017 00:13 200 shjs.cmd
09/03/2017 00:13 331 sshpk-conv
09/03/2017 00:13 208 sshpk-conv.cmd
09/03/2017 00:13 331 sshpk-sign
09/03/2017 00:13 208 sshpk-sign.cmd
09/03/2017 00:13 335 sshpk-verify
09/03/2017 00:13 212 sshpk-verify.cmd
09/03/2017 00:13 323 strip-bom
09/03/2017 00:13 200 strip-bom.cmd
09/03/2017 00:13 329 strip-indent
09/03/2017 00:13 206 strip-indent.cmd
09/03/2017 00:13 323 user-home
09/03/2017 00:13 200 user-home.cmd
09/03/2017 00:13 317 uuid
09/03/2017 00:13 194 uuid.cmd
09/03/2017 00:13 321 which
09/03/2017 00:13 198 which.cmd
09/03/2017 00:13 327 window-size
09/03/2017 00:13 204 window-size.cmd
03/2017 00:14 www
答案 4 :(得分:0)