@
bjzhou1990 恩。是个好办法。
我测试还是遇到问题
1. 在服务端。我自己测试的时候是通过 git init --bare 来建仓库的,所以服务端 git checkout --orphan 命令没法使用。。
2. 服务端进行操作后,所有的本地仓库都要克隆一遍。。
我考虑的办法。
假设我们要截断的点 hash 值为 1234abc
在服务端:
echo 1234abc > info/grafts
git filter-branch -- --all
以及后续删除 grafts 和 gc 操作
写个脚本让所有本地克隆的都执行。内容大概是
echo 1234abc > .git/info/grafts
git filter-branch -- --all
删除 grafts
git fetch --all
目的是让本地和服务端改变一模一样。这样本地的分支。没有 push 的 commits 都可以保留
还是遇到问题
在服务端;
执行 git filter-branch -- --all 之前要将所有的 1234abc 之前的分支都删除。
在本地
git filter-branch -- --all 执行的时候 origin/xx 这种分支也会被操作。总之结果很混乱。不是想要的效果
看来真的是无解啊。。