我正在运行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
Run Code Online (Sandbox Code Playgroud)
是什么原因引起了这个?它可以是我的.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
Run Code Online (Sandbox Code Playgroud)
更新:
虽然下面的答案提供了一些关于问题可能存在的想法,但我的问题特别隐藏在我的配置中,因为没有颜色参数传递给命令.这个答案是相关的,但我的问题和答案可能对可能遇到类似问题的其他人有所帮助.
小智 22
补丁文件中存在格式问题.要修复路径文件:
在记事本++中打开补丁文件,然后输入以下两个菜单:
Encoding/Convert to UTF-8
Edit/EOL conversion/Unix (LF)
Run Code Online (Sandbox Code Playgroud)跑:
git apply --reject --whitespace=fix your_patch.patch
Run Code Online (Sandbox Code Playgroud)lac*_*der 14
传递颜色参数似乎解决了这个问题.
iconv -f ascii -t utf-8 fix.patch -o fix_utf8.patch
Run Code Online (Sandbox Code Playgroud)
现在检查没有返回错误消息.
Get-Content .\fix.patch | Set-Content -Encoding utf8 fix_utf8.patch
Run Code Online (Sandbox Code Playgroud)
从中更改我的.gitconfig文件
git apply --reject --whitespace myfile.patch
Run Code Online (Sandbox Code Playgroud)
永远改变
git diff HEAD --color=never > fix.patch
Run Code Online (Sandbox Code Playgroud)
解决了我的问题所以我不必在传播到补丁文件时传递颜色选项.
更新:基于saurabheights答案,你甚至不需要brew link gnu-sed
,你可以用珍珠做到这一点.这也将从错误的补丁文件中删除颜色字符.可能有很多方法可以做到这一点.
git apply fix.patch --check
Run Code Online (Sandbox Code Playgroud)
我们尝试调试了几个小时。最终奏效的是:
VS Code
UTF-8
CRLF
为LF
git apply myPatch.patch
工作过 归档时间: |
|
查看次数: |
13047 次 |
最近记录: |