为什么我克隆的git历史与原始的git历史不同?

时间:2014-04-25 20:15:07

标签: git

我想从我的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在克隆时为我做了什么?

2 个答案:

答案 0 :(得分:0)

尝试运行以下两个git命令

git remote update
git remote prune origin

答案 1 :(得分:0)

好的,我找到了如何清理历史记录:git reflog expire --all

对于任何可以解释发生的事情的人来说,这个问题仍然存在......