3

发生了一些奇怪的事情——我的开发分支已经丢失了它的所有历史,直到最后一次提交。任何人都可以提出原因吗?

我做的最后一件事——安装了分叉的兄弟 GitX 并开始使用它(主要用于历史查看,但也尝试在合并时进行)。但是在develop之前从master开始并行进行,'feature-shape-fill'分支被合并到develop两次。我也在开发中做了 git stash。

现在 git log for develop 分支只显示最后一次提交。没有说“分离”之类的东西。

* 我已经害怕 GitX(官方和这个分支),因为上周也发生了一些奇怪的事情——在过去的几个提交中,二进制 .fla 文件在过去的晚上没有保存。所有的文本文件都很好,但是那个二进制文件就像是 4 次提交。在分支之间切换时,其他工作目录根本没有更新(我在控制台中工作,git没有说任何错误,这对他来说很好)。Donno 是否与 gitx 有关?

upd:看起来像这里提到的同样的问题http://groups.google.com/group/gitx/browse_thread/thread/71a0f759d115fee5 这是我得到的:

$ git reflog
157cfca HEAD@{0}: checkout: moving from feature-shape-fill to develop
46a6163 HEAD@{1}: checkout: moving from develop to feature-shape-fill
157cfca HEAD@{2}: commit: Rotated drag tip
7f6c394 HEAD@{3}: commit: TextShapesCanvas is working,
4765eed HEAD@{4}: merge feature-shape-fill: Merge made by recursive.
ed44a2c HEAD@{5}: checkout: moving from feature-shape-fill to develop
46a6163 HEAD@{6}: commit: More tight packaging (thnx to TextLineMetrics),
59b6d2d HEAD@{7}: checkout: moving from develop to feature-shape-fill
ed44a2c HEAD@{8}: merge feature-shape-fill: Merge made by recursive.
67d08b3 HEAD@{9}: commit: Basic grid functionality, need to add text shapes and fix resize-generation
505479c HEAD@{10}: checkout: moving from feature-shape-fill to develop
59b6d2d HEAD@{11}: commit (amend): Simple retrovirus non-optomized algorithm
5ec1b70 HEAD@{12}: commit: Simple retrovirus non-optomized algorithm
b9eaf18 HEAD@{13}: commit: The most ugly suitable version of fill algorithm
757f1b7 HEAD@{14}: checkout: moving from feature-shape-fill-predefined to feature-shape-fill
757f1b7 HEAD@{15}: checkout: moving from feature-shape-fill to feature-shape-fill-predefined
757f1b7 HEAD@{16}: checkout: moving from feature-shape-fill-auto to feature-shape-fill
b8e284f HEAD@{17}: commit: Auto fill first steps
757f1b7 HEAD@{18}: checkout: moving from feature-shape-fill to feature-shape-fill-auto
757f1b7 HEAD@{19}: commit: Test document created, components::TextShape base draft
505479c HEAD@{20}: checkout: moving from develop to feature-shape-fill
505479c HEAD@{21}: checkout: moving from master to develop

看起来他们并没有丢失,但是如何找回我的历史呢?

4

3 回答 3

2

develop如果我没记错的话,你给出的图片显示你的分支是分离的。

既然我知道它是基于master分支的,你可以把它放回主分支:

git rebase master develop

重要提示:在尝试上述操作之前,首先备份您的原始.git目录,因为我不确定这会产生您想要的结果。

您还可以通过创建一个临时分支并将其合并到其中develop2来获得类似的结果:masterdevelop

git checkout -b develop2 master
git merge develop

希望这可以帮助!.git我没试过,所以在尝试上述方法之前请先备份你的目录!

于 2010-12-18T13:41:35.593 回答
0

要查看开发分支如何更改的历史,请使用:

git reflog show develop

然后通过他们的 SHA(或按位置,例如develop@{1})检查或添加分支/标签到较旧的提交,直到找到最后一个正在工作的提交。例如:

git branch test 7f6c394

查看日志,这些其他提交似乎也是开发的一部分:ed44a2c、67d08b3、505479c

将开发分支移动到最后一个好的提交。您也许可以选择其他提交,但这实际上取决于导致错误的原因。

于 2010-12-18T15:45:50.023 回答
0

我遇到了完全相同的问题,提交的父 SHA 不知何故未设置,提交看起来好像存在于项目历史记录之外。EOL 提供的第一个选项会将您的提交带回历史记录,但会丢失所有分支历史记录。(至少,它对我有用。)我最终做的是查看我reflog的最后一个提交,然后是那个让我宝贵的分支陷入困境的提交。我看到的线条是这样的:

6d79889 HEAD@{24}: checkout: moving from online-payment-processing to gift-certificates
3da6ec3 HEAD@{25}: commit: fix computation of when to skip processing for special orders

基本上,提交是在签出不同的分支之后进行的。(在我的情况下,分支online-payment-processing是处于不确定状态的分支,并且“从”消息向我保证之前的提交在我的分支上。)我知道 HEAD 的提交是被搞砸的(而不是历史上的又一回)所以我发出了命令:

git rebase 3da6ec3 online-payment-processing

并且............它得到了修复(在一些冲突解决之后)并且我的分支历史被恢复了。

于 2013-01-19T00:57:50.093 回答