我相信,我的Git存储库状态不佳,当我做的时候
git fsck
Run Code Online (Sandbox Code Playgroud)
我在顶部收到以下警告.
103b5dd53f7a96f8e3a02aea0d3d4d9bb19644ed: contains zero-padded file modes
bb4729593e76f66b46292ad6ae61bfe909558337: contains zero-padded file modes
4709aa73691ce7da36dd22ccfd157c4514395330: contains zero-padded file modes
Run Code Online (Sandbox Code Playgroud)
我尝试了以下(由同事建议)来查找违规提交,以便我可以纠正它们.我尝试了以下方法.
git rev-list HEAD
.git ls-tree -rd
以查找所有相关对象SHA.git fsck
.上面的逻辑对我来说似乎是正确的,但它无法找到违规的提交.
git rev-list --all --remotes | while read commit; do git ls-tree -rd $commit | grep -E "103b5dd53f7a96f8e3a02aea0d3d4d9bb19644ed|bb4729593e76f66b46292ad6ae61bfe909558337|4709aa73691ce7da36dd22ccfd157c4514395330" && echo -e "HIT @ $commit\n\n"; done
Run Code Online (Sandbox Code Playgroud)
我们在这里失踪了什么?我们怎样才能发现违规提交或文件出现问题?最后,我想修复存储库.
Jos*_*sad 17
从注释添加变通方法作为答案:
使用重建repo git fast-export
然后git fast-import
解决问题,但SHA值将更改并且不会引用树引用.
创建一个新的空存储库:
mkdir /newrepo
cd /newrepo
git init
Run Code Online (Sandbox Code Playgroud)
使用fsck警告返回旧版本:
cd /oldrepo
Run Code Online (Sandbox Code Playgroud)
使用旧数据的快速导出来管理数据,以便在新的repo中快速导入
git fast-export --all | (cd /newrepo && git fast-import)
Run Code Online (Sandbox Code Playgroud)
只是对@9000的答案的补充:
在 中创建一个空的 git 存储库../newrepo
,并且
git fast-export --signed-tags=strip --all | (cd ../newrepo/ && git fast-import)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3634 次 |
最近记录: |