git init 报错 fatal: cannot copy ‘/usr/share/git-core/templates/info/exclude‘ to

问题描述

  • 在 ubuntu 20.04 平台上,编译Linux 内核时,打算使用 git 进行代码的管理,工程解压完,发现无法使用 git init 初始化 git 仓库

  • 报错信息如下:

rtt@ubuntu:~/rtt/linux$ git init
fatal: cannot copy '/usr/share/git-core/templates/info/exclude' to '/home/rtt/rtt/linux/.git/info/exclude': No such file or directory

问题分析

  • 开始以为是工程的权限问题,甚至重新安装了 git,发现依旧无法解决问题

  • 然后使用 sudo git init,问题依旧!

问题解决方法

  • 后来我在 windows 上查看代码时,忽然发现工程下已经有了 .git目录。

  • 因为只有已经使用了 git 管理的目录,才会有这个目录,但是这个 .git 目录的内容很少,应该这个工程之前是作为 git submodule 子仓库管理的,所以仓库的管理内容,也就是仓库本身放在了 主仓库的 .git 目录下。

  • 所以找到了解决方法:先删除这个 .git目录

  • 删除 .git 目录后,再次 git init,一切正常了

rtt@ubuntu:~/rtt/linux$ rm -rf .git

rtt@ubuntu:~/rtt/linux$ git status
fatal: not a git repository (or any of the parent directories): .git

rtt@ubuntu:~/rtt/linux$ git init
Initialized empty Git repository in /home/rtt/rtt/linux/.git/
  • 问题解决了

小结

  • 如果遇到类似的问题,如 git init 无法执行成功,首先需要查看当前目录下,是否已经存在了 .git 目录,也就是已经使用 git 管理了

  • 注意 git submodule 子仓库,默认仓库的内容都保存到 主仓库了,所以这个 .git 目录下没有什么信息,可以删除,重新 git init 初始化 git 仓库,进行代码的管理