我想从我的git存储库中提取一个目录并清除这两个历史记录。
我按照here解释的方法:
$ git clone --no-hardlinks foo.repo bar.repo
$ cd bar.repo
$ git filter-branch --subdirectory-filter bar HEAD -- --all
$ git reset --hard
$ git gc --aggressive
$ git prune
这很有效:) git log
也很干净。 :)清理remote
后,看起来好像我从第1天开始就把它放在一个单独的存储库中。
然后在原始存储库中,我跟着:
$ git filter-branch --tree-filter "rm -rf bar" --prune-empty HEAD
但是在这里,历史不是很干净,我可以看到bar
中的所有提交。 (编辑:仅限git log --all
,历史记录清晰,没有选项--all
)
但是,如果我将此存储库克隆为新存储库,则历史记录是干净的!那怎么样?
我错过了git clone
在克隆时为我做了什么?
答案 0 :(得分:0)
尝试运行以下两个git命令
git remote update
git remote prune origin
答案 1 :(得分:0)
好的,我找到了如何清理历史记录:git reflog expire --all
。
对于任何可以解释发生的事情的人来说,这个问题仍然存在......