Git:分支已经失去了历史?

时间:2010-12-18 12:54:31

标签: git branch gitx

发生了一些奇怪的事情 - 我的开发分支已经失去了它的历史,直到最后一次提交。有人能说出原因吗?

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

现在,开发分支的git log只显示最后一次提交。没有说'分离'之类的东西。

* 我已经害怕GitX(官方和这个分支),因为上周smth wierd发生了 - 二进制.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

看起来他们没有丢失,但是如何让我的历史记录回来?

3 个答案:

答案 0 :(得分:2)

如果我没有弄错的话,您提供的图片会显示您的develop分支已分离。

由于我了解它基于master分支,因此您可以将其放回主分支:

git rebase master develop

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

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

git checkout -b develop2 master
git merge develop

希望这有帮助!我还没有尝试过,所以请先尝试备份.git目录,然后再尝试上述目录!

答案 1 :(得分:0)

要查看开发分支如何改变使用的历史记录:

git reflog show develop

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

git branch test 7f6c394

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

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

答案 2 :(得分: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的提交是被搞乱的提交up(而不是历史上的另一个)所以我发出了命令:

git rebase 3da6ec3 online-payment-processing

和... poof ...它已修复(经过一些冲突解决后)我的分支历史记录已恢复。