标签: git-dangling

列出并删除没有分支的Git提交(悬空?)

我有一个Git存储库,其中有很多提交,没有特定的分支,我可以git show,但是当我尝试列出包含它们的分支时,它没有报告任何内容.

我认为这是悬挂的提交/树问题(由于-D分支),所以我修剪了回购,但之后我仍然看到相同的行为:

$ git fetch origin

$ git fsck --unreachable
$ git fsck
Run Code Online (Sandbox Code Playgroud)

没有输出,没有悬空(对吧?).但提交存在

$ git show 793db7f272ba4bbdd1e32f14410a52a412667042
commit 793db7f272ba4bbdd1e32f14410a52a412667042
Author: ...
Run Code Online (Sandbox Code Playgroud)

它不能通过任何分支到达

$ git branch --contains 793db7f272ba4bbdd1e32f14410a52a412667042
Run Code Online (Sandbox Code Playgroud)

没有输出.

这个提交的状态究竟是什么?如何列出处于类似状态的所有提交?如何删除那些提交?

git branch git-dangling

132
推荐指数
7
解决办法
6万
查看次数

Git:什么是悬空提交/ blob,它们来自哪里?

我正在寻找关于悬挂提交和blob的基本信息.

我的回购似乎很好.但是我git fsck第一次跑去看看它做了什么,我有一长串的'悬空blob'和一个'悬挂提交'.

这些是什么东西?哪儿来的?他们是否表明我的回购状态有什么异常(好的或坏的)?

git git-commit git-fsck git-dangling

128
推荐指数
5
解决办法
5万
查看次数

git:摇摇欲坠的blob

我最近跑git fsck --lost-found了我的存储库.

我希望看到几个悬空提交,我重置了HEAD.

但是,我惊讶地看到可能有数千条悬空blob消息.

我不相信我的存储库有任何问题,但我很好奇是什么原因导致这些悬空斑块?只有两个人在存储库上工作,我们没有做任何与众不同的事情.

我不认为它们是由旧版本的文件替换为新版本创建的,因为git需要保留两个blob以便它可以显示历史记录.

想想看,有一次我们错误地将一个非常大的目录(数千个文件)添加到项目中然后将其删除.这可能是所有悬空斑点的来源吗?

只是寻找洞察这个谜.

git git-dangling

60
推荐指数
3
解决办法
2万
查看次数

如何从GitHub中删除悬空提交?

昨天,我在GitHub上推送了ConnectBot的分支.我推了一次,意识到我没有按照我想要的方式进行更改,重新提交并再次推送.

现在,GitHub都提交了两个提交:

我的主分支只跟踪第二次提交,但第一次提交仍然可用,仍然在我的活动源中.如何删除它以确保没有人意外地提取该提交而不是更正的版本?

git github git-dangling

25
推荐指数
2
解决办法
4987
查看次数

在Git的悬空提交中搜索字符串

下面的怪物非常好地发现了一个包含上传这个词的git藏匿,这正是我所寻找的:

git fsck --no-reflog | awk '/dangling commit/ {print $3}' | \
while read ref; do if [ "`git show -p $ref|grep -c Upload`" -ne 0 ]; then echo $ref ; fi ; done 
Run Code Online (Sandbox Code Playgroud)

这有更漂亮的版本吗?我猜镐应该有效,但git log -g看不到这个提交.

git git-dangling

8
推荐指数
1
解决办法
1061
查看次数

git:这些悬挂提交吗?

最后给出的是从SourceTree分支树视图中提取的屏幕截图(屏幕截图中间有一个间隙)

在那里,#1指向曾经是分支的行1.7.6.14.X#2指向同一分支的当前状态.

#3该行引用的提交和之前的8次提交之前已附加到分支1.7.6.14.X.然后另一个开发人员据说检查了同一个分支并完成了修复指向#4.这个#4提交已经从分支中删除了前9个提交1.7.6.14.X并让它们悬空.
因此,分支1.7.6.14.X现在从原始分支点开始,而不是仅从提交延伸#3.

跑步git fsck--unreachable,--dangling等不给任何错误.我也试过--lost-found了.

然而,git fsck <hash of commit #3>产生了五个悬空提交和一大堆悬空标签:

Checking object directories: 100% (256/256), done.
Checking objects: 100% (3148/3148), done.
dangling commit ec213...
dangling commit ab82a...
dangling commit 7d262...
dangling commit a6f06...
dangling commit 6674a...
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 什么可能导致这种情况(即分支#1分离)?

  2. 如何检测其他存储库中是否存在类似问题?(无需知道分离提交的哈希值#3)

提交与分支分离

更新:

我们找到了问题(1)的答案.这种情况是由一个拥有旧分支快照的开发人员向中心裸仓库推动的.

git git-commit git-dangling

7
推荐指数
2
解决办法
629
查看次数

在git中,悬空提交和悬空blob之间有什么区别?

当我这样做时git fsck,我会看到悬挂物体的清单.其中一些被称为悬挂提交,而另一些被称为悬空blob.我想知道这两者之间究竟有什么区别.

git git-dangling

3
推荐指数
1
解决办法
478
查看次数

标签 统计

git ×7

git-dangling ×7

git-commit ×2

branch ×1

git-fsck ×1

github ×1