文章目录
  1. 1. 中文文件或目录名被转码
  2. 2. fatal: cannot exec .. Permission denied
  3. 3. Cygwin git ca-bundle.cert错误
  4. 4. recursion detected in die handler
  5. 5. 重写分支历史
  6. 6. reference

中文文件或目录名被转码

git默认会对路径里超过0x80的字节进行转码,设置core.quotepathfasle可以禁止自动转码,详情见git-config(1)core.quotepath部分。

git config --global core.quotepath false

fatal: cannot exec .. Permission denied

使用git alias命令git st(参考这里的配置)时提示如下错误:

fatal: cannot exec git st: Permission denied  

参考stackoverflow上的解答, 使用如下方法解决.

  • 安装strace

    apt-get install strace

  • 使用strace执行git st

    strace -f -e execve git st

  • 根据输出结果进行修正.

Cygwin git ca-bundle.cert错误

cygwin下用git向远程https仓库推送数据时遇到以下问题:

error: error setting certificate verify locations:
CAfile: /usr/ssl/certs/ca-bundle.crt
CApath: none while accessing https://github.com/wilbur-ma/dokuwiki-tweak.git/info/refs
fatal: HTTP request failed

参考这里,解决办法是在cygwin上安装ca-certificates。

recursion detected in die handler

使用git push的时候遇到如下问题:

fatal: recursion detected in die handler  

有时候也表现为:

POST git-receive-pack (chunked) 

或者这样:

error: RPC failed; result=22, HTTP code = 411
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly

这个问题非常常见,原因是http.postBuffer默认上限为1M所致,这算是一个bug,只有当remote是http(s)方式的时候会遇到。
在git的配置里将http.postBuffer变量改大一些即可,比如将上限设为5M:

git config http.postBuffer 5242880  

also @see POST git-receive-pack (chunked)
and @see git push fails: RPC failed; result=22, HTTP code = 411

重写分支历史

使用交互式变基git rebase -i <target_commit_hash>

reference

git aliases causing permission denied error
git push fails: RPC failed; result=22, HTTP code = 411
git-config(1) Manual Page
POST git-receive-pack (chunked)

文章目录
  1. 1. 中文文件或目录名被转码
  2. 2. fatal: cannot exec .. Permission denied
  3. 3. Cygwin git ca-bundle.cert错误
  4. 4. recursion detected in die handler
  5. 5. 重写分支历史
  6. 6. reference