我有一个破碎的树,其中包含
给出的哈希值$ git fsck
Checking object directories: 100% (256/256), done.
warning in tree <tree-hash>: nullSha1: contains entries pointing to null sha1
我希望找到引入它的提交。 我知道如果我尝试过滤分支,我可以找到该信息,例如:
$ git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch <my_broken_subdir>' --prune-empty --tag-name-filter cat -- --all
...
Rewrite <commit_hash> error:
cache entry has null sha1: <my_broken_subdir>
但是,我有一个历史悠久的项目,运行git-filter
需要很长时间。
更新
实际上,树被破坏了它包含一个空sha1。因此,git bisect
将不起作用,因为在我检查的任何提交中,运行
git fsck
总是会给我
warning in tree <tree-hash>: nullSha1: contains entries pointing to null sha1
答案 0 :(得分:1)
一般来说,尝试通过提交找到一个树听起来并不好玩,因为“破坏的”var str = 'this $is a _test@#$%';
str = str.replace(/[\W_]+/g,' ');
console.log(str);
可能位于任何给定提交的var str = 'this $is a _test@#$%';
str = str.replace(/[\W_]+/g,' ');
var res = str.split(' ').map((s) => s.charAt(0).toUpperCase() + s.substr(1)).join(' ');
console.log(res);
层次结构中的任何位置。听起来好像你可能知道相应的目录路径,这会简化一些事情,但这仍然听起来像是一个非常复杂的自定义脚本。
使用TREE
和TREE
(查找错误)作为每次提交的测试可能更简单。