git报错invalid object xxx和unable to read tree xxxxxx
电脑出问题了,导致git仓库像是被损坏了一样,执行git status就会报错unable to read ree,无法正常提交代码至仓库,原因是本地代码仓库.git文件损坏了,无法找到正确的提交历史和路径。
找到了一个解决办法:
- 线上代码仓库所有代码合入,至最新状态(这一步很关键,不然复制了也对不上);
- 然后将线上代码库客隆下来,执行以下操作:
# 进入本地拉取的线上项目副本文件夹
cd copy/path/to/project
# 将副本文件夹中的.git文件复制到本地损坏了.git文件的项目文件夹中
cp -r .git path/to/local_modified_project/
利用线上仓库.git文件修复本地损坏的文件,再进行git status或者commit就正常了。
还有一个问题就是如果不小心在子文件夹下进行了git init命令,导致文件夹下文件的状态不对,但此时根目录下所有的文件状态已经通过上述步骤修复,原因是在子文件夹下执行init会新建一个子目录仓库,从而导致状态不一致,此时可以通过以下步骤修复:
# 进入子项目目录
cd sub_project
# 删除不小心新建的.git文件
rm .git
然后在配置中重新配置git至根目录路径即可: