问题描述

  • 在 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 仓库,进行代码的管理