1

我正在尝试将项目导入启动板,但这失败并出现错误:

  File "/srv/importd.launchpad.net/production/launchpad-rev-17114/bzrplugins/git/fetch.py", line 119, in import_git_blob
    ie = cls(file_id, name.decode("utf-8"), parent_id)
  File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xca in position 0: invalid continuation byte

所以我想知道如何在所有提交日志中搜索此“0xca”字符并将其删除?使用 QGit 手动查看历史不会显示任何不合适的字符。

4

1 回答 1

1

您可以使用git log --grep...来查找错误的提交并手动修复它们(不确定 unicode 是否可以使用--grep)。如果有太多需要手动修复,或者您想自动化该过程,请考虑git filter-branch --msg-filter <command>通过执行 shell 命令来修改每个提交消息<command>。这是一个简单的使用示例--msg-filter

   mkdir tmp
   cd tmp
   git init
   touch a
   git add .
   git ci -am 'first commit'
   touch b
   git add .
   git ci -am 'second commit'
   git log --oneline
   git filter-branch --msg-filter 'sed "s/^/hello /"'
   git log --oneline

请参阅此问题,以了解如何填写<command>将适当更改提交消息中的 unicode 的命令。

然后,您可以通过运行检查更改

diff <(git log original/refs/heads/<your-branch> --oneline | cut -d' ' -f 2-) <(git log <your-branch> --oneline | cut -d' ' -f 2-)
于 2014-07-22T01:39:38.830 回答