问题原因:
由于找不到对应的.git文件
1.当本地没有.git时
当本地没有.git文件时,网上大多的资料都是在本地目录下执行
git init
2.移动文件后
在esp32项目中楼主把esp-idf-new的中间路径删除
也就是目录路径从~/esp/esp-idf-new/esp-idf/ ----> ~/esp/esp-idf/
此时出现错误:
fatal: Not a git repository :~/esp/esp-idf-new/esp-idf/.git/modules/components/esptool_py/esptool
此时git init不能解决,
解决过程如下:
当文件修改了, .git路径修改了,但是嵌套的.git库并没有修改
$ grep "esp-idf-new" -r .
./examples/build_system/cmake/import_lib/main/lib/tinyxml2/.git:gitdir: /home/lx/esp/esp-idf-new/esp-idf/.git/modules/examples/build_system/cmake/import_lib/main/lib/tinyxml2
./components/cbor/tinycbor/.git:gitdir: /home/lx/esp/esp-idf-new/esp-idf/.git/modules/components/cbor/tinycbor
./components/nghttp/nghttp2/third-party/neverbleed/.git:gitdir: /home/lx/esp/esp-idf-new/esp-idf/.git/modules/components/nghttp/nghttp2/modules/third-party/neverbleed
./components/nghttp/nghttp2/third-party/mruby/.git:gitdir: /home/lx/esp/esp-idf-new/esp-idf/.git/modules/components/nghttp/nghttp2/modules/third-party/mruby
./components/nghttp/nghttp2/.git:gitdir: /home/lx/esp/esp-idf-new/esp-idf/.git/modules/components/nghttp/nghttp2
./components/unity/unity/.git:gitdir: /home/lx/esp/esp-idf-new/esp-idf/.git/modules/components/unity/unity
./components/json/cJSON/.git:gitdir: /home/lx/esp/esp-idf-new/esp-idf/.git/modules/components/json/cJSON
于是就找了一下包含原来路径的"esp-idf-new",但是由于文件太多,不可能一个一个进去删除,于是就用了sed去自动替换
sed -i s#'esp-idf-new/'##g `grep "esp-idf-new" -rl .`
常用的sed格式为:"s/xxx/yyy/g" 将xxx替换成yyy
但是这里替换为"esp-idf-new/"中包含"/",所以采用"s#xxx#yyy#",这里将"grep "esp-duf-new" -rl ."中找到包含"esp-idf-new"的文件全部替换成空(也就等于删除了)。
结论:
当后续遇到这种问题时:
1.若没有.git时则调用git init去创建
2.如果路径问题则通过查找把错误文件找出来再进行修改