问题标签 [git-dangling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
84033 浏览

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

我有一个 Git 存储库,其中包含大量不属于特定分支的提交,我可以提交git show,但是当我尝试列出包含它们的分支时,它什么也没有报告。

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

没有输出,没有任何悬空(对吗?)。但是提交存在

并且无法通过任何分支访问,因为

没有输出。

该提交的具体状态是什么?如何列出处于相似状态的所有提交?我怎样才能删除这样的提交?

0 投票
2 回答
8644 浏览

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

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

现在,GitHub 有两个提交:

我的主分支仅跟踪第二次提交,但第一次提交仍然可用并且仍在我的活动提要中。如何删除它以确保没有人意外拉出该提交而不是更正版本?

0 投票
3 回答
21444 浏览

git - git:悬垂的斑点

我最近git fsck --lost-found在我的存储库上运行。

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

然而,我很惊讶地看到可能有数千条悬空的 blob 消息。

我不相信我的存储库有什么问题,但我很好奇是什么导致了这些悬空的斑点?只有两个人在处理存储库,我们没有做任何不寻常的事情。

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

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

只是想深入了解这个谜团。

0 投票
1 回答
538 浏览

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

当我执行 agit fsck时,我会看到一个悬空对象列表。其中一些被称为悬空提交,而另一些被称为悬空 blob。我想知道这两者之间的确切区别是什么。

0 投票
1 回答
986 浏览

git - 如何将悬空的 blob 与 Git 中的文件名匹配?

我还有另一个git rm -rf没有初始提交的例子。(我意识到我添加了很多无用的文件并想添加一些过滤器。)

现在我剩下 23000 个没有树的悬空 blob,但有完整的 Git 历史!

我将使用脚本循环遍历 blob 名称(使用git show 'blobname' > 'filename'),但是我可以将这些文件名从历史记录关联到 blob 吗?

0 投票
2 回答
188 浏览

git - 悬空的 git add blobs 是否被推送到主存储库?

我们可以恢复曾经添加(但未提交)然后使用 git reset --hard 删除的文件。请参阅执行 git reset --hard HEAD^ 后恢复添加的文件

当我们将更改推送到某个上游存储库时,这些 blob 是否也被推送了?

背景:在进行任何开发时,我偶尔会对更改的文件执行 git add 操作,但不要提交它们。这一次,我使用一些关键的 api 凭据进行了 git add,我想知道如果我要开源 repo/gem 是否可以从日志中恢复它们。

0 投票
5 回答
86000 浏览

git - 什么是 Git 存储库中的悬空提交和 blob,它们来自哪里?

我正在寻找有关悬空提交和 blob 的基本信息。

我的存储库似乎很好。但我第一次跑来git fsck看看它做了什么,我有一长串“悬空 blob”和一个“悬空提交”。

这些是什么东西?哪儿来的?它们是否表明我的存储库状态有任何异常(好或坏)?

0 投票
1 回答
1614 浏览

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

下面的怪物很好地找到了一个包含单词 Upload 的 git stash,这是我正在寻找的:

这个有更漂亮的版本吗?我猜镐应该可以工作,但git log -g没有看到这个提交。

0 投票
1 回答
176 浏览

git - Git找不到悬垂的树原点

我在当前文件和外部驱动器上的文件备份之间运行差异检查器,我发现 git repo 和它的备份之间存在一些差异。唯一的区别是左侧 .git/objects 下的一些额外文件和右侧两个空白 .git/objects/info 和 .git/objects/pack 文件夹。我做了一个快速git showgit log两边,它给出了相同的输出。

然后我做了一个git fsck --no-reflogs, 并在左侧发现了一个额外的悬空提交。迭代git ls-tree地向下执行那个额外的提交给了我一堆树和 blob,它们占除了左侧的一个额外文件之外的所有文件。

使用git cat-file -t <sha1>最后一个文件告诉我这是一棵树。但是,我git ls-tree在每次提交时都使用过,但仍然没有找到对这个神秘树对象的引用。那么这个文件究竟是从哪里来的呢?我 99.99% 肯定没关系,只是好奇:P

0 投票
2 回答
1396 浏览

git - git:这些是悬空提交吗?

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

其中,#1指向曾经是分支的线路,1.7.6.14.X#2指向同一分支的当前状态。

引用的提交#3和该行上的前 8 个提交以前附加到 branch 1.7.6.14.X。然后另一个开发人员应该检查了同一个分支并做了#4. 此#4提交已从分支中删除了前 9 个提交,1.7.6.14.X并使它们悬空。
结果,分支1.7.6.14.X现在从原始分支点开始,而不是仅仅从 commit 扩展#3

运行git fsck, etc 不会给出任何错误--unreachable--dangling我也试过--lost-found了。

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

我有两个问题:

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

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

提交与分支分离

更新

我们找到了问题(1)的答案。这种情况是由拥有旧分支快照的开发人员强制推送到中央裸仓库引起的。