使用git filter分支删除索引后,同事的推送操作将旧索引带回来。
我运行了一个bitbucket repo,它的大小增长到了2gb以上,变成了只读的。为了恢复这种情况,他们建议重置为以前的提交,并使用git filter分支清理我的索引。我成功地做到了。完成此操作并进行修剪后,我的本地大小大小包(git count对象)降至300MB。不过Bitbucket只降到了1.2GB,我不明白有什么区别,但还有一个更大的问题。
当我的同事,也使用那个分支,推动更多的变化,大小跳回到超过2GB。显然,他们仍然在本地拥有索引(尽管他们已经先做了git拉取)。
我运行的命令是…
git filter-branch --force --index-filter 'git rm -r --ignore-unmatch NAME_OF_DIRECTORY_I_DONT_WANT_ANYMORE' --prune-empty --tag-name-filter cat -- --all
对所有相关目录重复,然后:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --all --force
1)我不明白发生了什么事,有人能告诉我吗?
2.)当我通过git filter branch、pruning等方法再次修复这种情况,并推送到服务器上时,如何确保我的同事也得到这些更改?所以我们不会一直重复这个循环?