【发布时间】:2021-09-14 11:03:41
【问题描述】:
通过过滤将我的工作区中的存储库分成两个后,我将它们“裸”克隆到新的源中,然后继续在当前分支的克隆工作区中工作,没有问题。
几次提交后,我将分支合并到master,然后成功推送。
接下来,我删除了工作区中过时的分支。
但是,当我也尝试删除“原始”存储库中过时的分支时,我遇到了以下问题:
-
git branch列出了由于fatal: Couldn't look up commit object for HEAD而我无法使用git branch -d删除的分支。 -
git fsck抱怨:notice: HEAD points to an unborn branch (bitmap-generic)
(我希望git fsck 能够识别那些“死”的分支并清理它们,但显然没有)
不幸的是,我没有记录确切的命令,但大致就是我所做的(基于 Preißel 和 Stachmann 的 Git 书籍第 1 版(德语)第 19.1 节中给出的说明):
-
备份:
git clone --no-hardlinks --bare orig.git backup.git -
删除不需要的文件:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch ...' --tag-name-filter cat --prune-empty -- --all -
重组:
git clone --no-hardlinks --bare backup.git new.git -
删除备份:
rm -rf backup.git -
查看
new.git并继续努力 -
删除
new.git:git branch -d ...中不需要的过时分支 我该如何解决这些问题? 使用的 Git 版本是 2.26.2。
【问题讨论】:
-
"接下来我删除了我工作区中过时的分支。"你能告诉我们如何(命令)吗?
-
git status的输出是什么? -
除此之外,裸存储库没有检出分支。如果要删除远程分支,可以使用
git push --delete。 -
@dan1st
git status在存储库中没有意义,git push --delete存在分支已经在工作区中删除的问题。还是会起作用?
标签: git git-branch