Git应用错误:无法识别的输入

Git应用错误:无法识别的输入,git,Git,当我尝试应用更改时,我将得到错误。我做错了什么?默认情况下是否启用了彩色输出 如果git diff 4ee42367 8c650199在终端中显示彩色,则彩色代码将输出到补丁文件 然后,git apply将失败,出现错误:无法识别的输入 在本例中,请尝试使用git diff--no color以防其他人有此问题:对我来说,Powershell是罪魁祸首。在git bash中使用Anentropic的答案得到了一个“良好”(可读)的补丁。我按照下面的说明解决了这个问题 git checkout-b

当我尝试应用更改时,我将得到错误。我做错了什么?

默认情况下是否启用了彩色输出

如果
git diff 4ee42367 8c650199
在终端中显示彩色,则彩色代码将输出到补丁文件

然后,
git apply
将失败,出现
错误:无法识别的输入


在本例中,请尝试使用git diff--no color

以防其他人有此问题:对我来说,Powershell是罪魁祸首。在git bash中使用Anentropic的答案得到了一个“良好”(可读)的补丁。

我按照下面的说明解决了这个问题

  • git checkout-b新建分支机构
    并提交一些内容
  • git diff master--无颜色>您的补丁文件。补丁
  • 用NotePad++打开“your_patch_file.patch”文件并编辑该文件,如下所示:,
    • 编码>转换为UTF-8
    • 编辑>下线转换>Unix(LF)
    • 保存文件
  • git签出主机
  • git应用您的\u补丁\u文件\u名称。补丁

  • 或者,您可以在git Bash上运行git命令,可能不会遇到任何问题。

    对于在Powershell中运行此表单的用户,请提供有关编码错误的信息以及发生此错误的原因

    如果您只是在寻找答案,您可以编辑powershell配置文件:

    PS>code$profile

    $PSDefaultParameterValues['Out-File:Encoding']='utf8'

    这可能会导致其他问题,因此使用风险自负

    如果您只想为单个实例运行它,您可以这样做

     git diff 4ee42367 8c650199 > changes2.patch
     git checkout newBranch
     git apply changes2.patch
     error: unrecognized input
    

    你能分享
    变更2.patch
    的内容吗?我无法重现这种行为,但我想马上使用
    --full index
    --binary
    选项进行
    git diff
    可能会有所帮助。我假设这些散列要么是提交ID,要么是适当的树ID;我的猜测是,你只是有一些内容弄乱了一个基本的差异(就能够创建一个适用的补丁而言);但是我试过的所有组合都没有出现这种确切的症状(至少在我的git版本上),所以我不确定。你这个男人!您为我指明了修复
    lerna
    中错误的正确方向。谢谢,您为我节省了很多麻烦和浪费的时间:)显然,Powershell以UTF-16生成输出,get无法使用。以下是有关如何在Powershell中缓解此问题的链接:。简单的修复方法是首先运行
    $PSDefaultParameterValues['*:Encoding']='utf8'
    $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
    git diff > change.patch
    git checkout otherbranch
    git apply change.patch