我遇到这种情况:
B C D
/-----*-----*-----*
-*---*---*---*---*---* branch A
A1 A2 A3 A4 A5 A6
提交B,C,D不属于任何分支。如果我运行我的幻想git lg
它不会显示它们附近的任何分支标签(它适用于主,源/主,HEAD,主题分支等)。如果我结账,我会转移到#34;分离的头部" state(这是预期的,因为我可以检查它们的唯一方法是使用sha1)。如何删除它们?
到目前为止我尝试过的事情:
git reset HEAD~3 --hard
,HEAD指针移动到A4,但提交仍在此处。git reflog expire --expire=now --all
,然后是git gc --prune=now
,提交仍在此处。发生了什么以及如何删除这些提交?
编辑:39d9480是有问题的提交之一。尝试使用merge-base,得到了这个输出:
git merge-base --is-ancestor 39d9480 master; echo $?
0
git merge-base --is-ancestor master 39d9480; echo $?
1
在尝试变基时,我没有看到这个提交。
答案 0 :(得分:0)
$('#myform').serializeArray();
命令仅扫描本地和远程分支。此脚本将显示任何类型的引用,其中包含具有给定哈希的提交:
git branch
散列 git for-each-ref -s --format 'if git merge-base --is-ancestor
答案 1 :(得分:-1)
据我所知,您无法自行删除提交。有些时候它们会消失,感谢Git。但他们不会干扰你的工作:)
答案 2 :(得分:-1)
您可以尝试创建分支,将其重新绑定为空,然后将其删除:
git checkout D_HASH
git checkout -b disposable
git rebase -i HEAD~4
[ interactively delete commits from branch only -- do NOT delete A4 ]
git branch -D disposable