首先,我结帐一个分支

> git checkout -b renaming-Foo-to-Bar

然后我编辑文件以将Foo类的实例重命名为Bar。 随后

> git add -u

但是现在我省略了运行git commit -m "renamed Foo to Bar"

考虑到我确实提交了,所以我将分支合并到master。

> git checkout master
> git merge renaming-Foo-to-Bar

直到我阅读了合并消息(某种“没有合并”的东西)之后,我才意识到自己没有提交。

IIUC,我现在有一个所谓的“悬挂提交”,并通过运行

> git fsck --lost-found
Checking object directories: 100% (256/256), done.
dangling blob   03c044a..cb
dangling commit ab8076f..47
dangling commit 128532d..99
dangling commit 5605e2d..4a

我可以恢复的。 但是, dangling commitdangling blob消息没有时间戳或其他标识信息。

我如何恢复这种悬空的提交?

不幸的是,我的dangling commits/blobs很多:

> git fsck --lost-found | wc
Checking object directories: 100% (256/256), done.
      52     142    2806

在前几个和最后几个SHA上运行 git show 03c044a..cb揭示了我历史的深刻变化,而不是最近的变化。

#1楼 票数:1

直到我阅读了合并消息(某种“没有合并”的东西)之后,我才意识到自己没有提交。

...在这种情况下,您仍应“分阶段”进行更改,即您已对索引进行了更改。 git status应该显示一切准备提交。

IIUC,我现在有一个所谓的“悬空提交” ...

不:这些是确实存在的提交(因此必须在某个时候进行),但是现在没有外部名称可用来查找它们。 由于您尚未提交,因此该提交尚不存在。

假设您仍想在分支上提交重命名,则只需要切换回重命名分支并提交即可。 请参阅Git-当当前分支上有未提交的更改时签出另一个分支,以了解到目前为止的更多操作。

#2楼 票数:1 已采纳

如果您没有提交更改而只是暂存更改而现在丢失了,那么找到更改的唯一解决方案是搜索悬空的Blob(当您暂存更改时不创建任何提交对象,也没有树对象:-( )

您可以尝试按日期对相应文件进行排序,并使用命令git cat-file -p SHA1来显示内容。

上周,我这样做是为了保存同事,将所有Blob内容都放在文件夹中的文件中,然后使用文本编辑器查找所需的文件。

  ask by Calaf translate from so

未解决问题?本站智能推荐:

1回复

从GitHub fork修剪悬空提交

我在GitHub上创建了一个仓库。 我将提交(其提交消息包含对原始存储库中的问题的引用)推送到我的fork。 我在重新设置基准,重新措辞等时多次推送相同的提交。 因此,我将同一代码更改的不同版本推送到了fork中,但是在任何分支中都只有最新版本,而旧版本都是过时的悬空提交。
1回复

恢复后如何将提交提交到项目?

我的 repo https://github.com/Kuba1618/Pac-Man_Game有一些问题,我确实在分​​支上推送了一些提交,现在我想将我的更改恢复到我的提交。 我尝试切换到https://github.com/Kuba1618/Pac-Man_Game/commit/23fd4e9
1回复

修改后的提交恢复到之前的提交

我有一个带有主分支的仓库。 我在一次提交中修改了补丁集 1 到 10。 现在我已经修改了该提交中的第 11 个补丁集,并在 gerrit 中推送了代码。 我想将提交恢复到第 10 次提交并推送。 我如何恢复,就像我看到 git log 一样,它没有列出该补丁集中的提交。 但它更倾向于将其视为一次提交
5回复

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

我正在寻找有关悬空提交和 blob 的基本信息。 我的回购似乎很好。 但是我第一次运行git fsck来看看它做了什么,我有一长串“悬空的斑点”和一个“悬空的提交”。 这些是什么东西? 哪儿来的? 它们是否表明我的回购状态有任何异常(好或坏)?
2回复

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

昨天,我在 GitHub 上推送到我的 ConnectBot 分支。 我推送了一次,意识到我没有按照我想要的方式进行更改,重新提交并再次推送。 现在,GitHub 有两个提交: https://github.com/nylen/connectbot/commit/1cd775d——第一个“
3回复

推送后恢复丢失的提交

我可以在恢复策略中使用一些帮助。 不知何故,我们最终处于一个提交下降约3天提交的位置。 然后被推了 。 提交者不确定他是否强迫推进或什么,但现在我们处于这个位置。 自“坏”提交以来,已经推出了大约10个额外的提交。 所有的旧提交都在那里,我可以将所有内容重新组合在一起,但我希望Gi
3回复

恢复后如何在保留提交信息的同时提交相同的提交?

假设我执行以下操作: 现在,在还原了那些提交之后,发生了一些变化,我决定我再次想要那些提交。 我不能再次进行git merge A ,因为这些提交已经在分支中。 我不想做git revert head因为当有人运行git blame ,他们会看到Revert "Revert
1回复

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

当我做一个git fsck ,我看到一个悬空物体列表。 其中一些被称为悬挂提交,而另一些被称为悬空blob。 我想知道这两者之间究竟有什么区别。