在filter-branch --tree-filter之后从git repo中删除refs / original / heads / master

古法德

我有一个与此处相同的问题:根目录中的新git存储库将一个子目录包含在一个子目录中

我在这里按照以下答案进行操作:根目录中的新git存储库将子目录中的现有存储库包含在内

现在,gitk --all显示两个历史:一个以当前master高潮,另一个是命名original/refs/heads/master

我不知道这第二个历史是什么,或者如何将其从存储库中删除。我的存储库中不需要两个历史记录。

我如何摆脱它?

重现自己:

mkdir -p project-root/path/to/module
cd project-root/path/to/module
mkdir dir1 dir2 dir3 
for dir in * ; do touch $dir/source-file-$dir.py ; done
git init
git add .
git commit -m 'Initial commit'

现在我们有了原始海报的问题。让我们使用上面链接的答案将git repo的根移到project-root:

git filter-branch --tree-filter 'mkdir -p path/to/module ; git mv dir1 dir2 dir3 path/to/module' HEAD
rm -rf path
cd ../../../ # Now PWD is project-root
mv path/to/module/.git .
git reset --hard

现在,看看我当前的问题:

gitk --all &
git show-ref

如何清除refs/original/heads/master所有关联的历史记录?

卡斯卡贝尔

refs/original/*是否有备份,以防您弄乱过滤器分支。相信我,这是一个非常好的主意。

检查结果后,如果您对自己想要的东西很有信心,则可以删除备份的参考:

git update-ref -d refs/original/refs/heads/master

或者,如果您对许多裁判都这样做了,而您想将其全部清除:

git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d

(直接取自过滤器分支的联机帮助页。)

这不适用于您,但适用于可能会发现此问题的其他人:如果您执行筛选器分支以删除占用大量磁盘空间的内容,则您可能还希望运行git reflog expire --expire=now --all并使git gc --prune=nowreflog到期并删除现在未使用的对象。(警告:完全,完全不可逆。在操作之前,请务必确保。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

git在master和branch之间的信息之前/之后?

带有--since的git filter-branch --tree-filter返回“找不到要重写的内容”

我的.git / refs / heads / master文件在哪里

git filter-branch删除文件夹失败

提交时无法设置refs / heads / master

git filter-branch后忘了rm refs / original

如何在Linux终端中删除git branch.master

删除分支->安全地编辑.git / refs / heads中的文件?

如何从git的filter-branch命令中删除重复的提交?

如何撤消'git update-ref -d refs / heads / master'?

Git Filter-Branch All命令

GIT:将branch1和branch2合并到master中,而不会覆盖

netlify部署失败:git ref refs / heads / master不存在或您没有权限

Jenkins Job Branch Specifier中的master和refs / heads / master之间有什么区别

Git push Refspecs:`refs / heads / *:refs / heads / origin`与`refs / heads / *:refs / heads / *`

从bash shell运行“ git filter-branch”

git push失败,并带有远程消息:错误:挂钩拒绝更新refs / heads / master

为什么带有显式refs / heads / branch的git checkout给出分离的HEAD?

命令“ git branch --merged master”中的“ master”是什么意思?

致命:引用的格式无效:“ refs / heads / master〜”

git branch从分支而不是从master

git filter-branch没有删除我的目录

撤消git filter-branch导致的文件删除

Git Push:HEAD:refs / heads / <branch>和<branch>有什么区别?

在执行git filter-branch时如何删除其他子目录

在Mac上将git推送到refs / heads / master失败,如何解决?

'git filter-branch'失败时,从特定提交中删除特定文件

git filter-branch 不会从 GitHub 中删除我的 appsettings.json

如何删除由 git filter-branch 制作的备份