错误合并后修复Git仓库

8 git merge

我有一堆独立的分支,我想合并它们,因为它们中的每一个都是对程序不同部分的更新.

我想我应该把它们合并但是我跑完git commit -a了每个分支.

然后我意识到整个程序都回到过去了,所以我跑了一个git reset --soft HEAD(我在某个地方读过一篇文章,这应该有帮助),但那没有做任何事情.

我也从git那里得到了关于手动删除一些的消息,./git/index.lock所以我把它移到了./git/backup_of_index.lock,但这似乎也没有做任何事情.

如何修复我的存储库并合并所有分支?

Gre*_*ill 14

在这种情况下最重要的git命令是git reflog.reflog会跟踪每个特定分支头的所有更改,并且该git reflog命令会列出分支头的所有更改及时返回.

如果你可以使用reflog识别一个"好"的提交id(并且它会在那里,某处),那么你就要领先于现在的位置.如果有一个好的提交id abc123,那么命令:

git checkout -b rescue abc123
Run Code Online (Sandbox Code Playgroud)

创建一个rescue在提交ID 处调用的新分支abc123.

当我学习git时,我有类似的"我在哪里,我是怎么来到这里的?" 时刻.我在不同的Stack Overflow问题上了解了关于垃圾邮件的问题,了解Git是最有价值的事情.

  • @ jsd911:没关系.重置头部不会删除reflog或任何内容.reflog会跟踪分支头部的每个更改.它会记住它们,所以每当分支发生变化时,*previous*值都存储在reflog的顶部.查看reflog是一个回溯过程,包含对分支的每个更改.因此,如果您的分支在过去的某个时刻包含"正确"的提交ID,那么它将在reflog中. (2认同)

Chr*_*ris 1

错误:

  1. “我开始在我的新项目中使用 git”
  2. “我只是想合并它们,因为它们都是对程序不同部分的更新”

当你的代码有意义时,你不应该涉足不熟悉的领域。如果你想这样做,至少要有一个后备计划。

灾难恢复似乎只对那些最需要它的人来说很重要,但到那时就为时已晚了。

我完全赞成实验,但我讨厌看到这种情况,我为开发人员感到难过,因为我太了解他的鞋子了,但是一旦你学会了这个错误,你就永远不会忘记它。

在你决定玩之前,把你的代码扔到其他地方,这样当事情发生时你就可以回到你的舒适区,继续作为一个快乐的开发人员工作,并在完成工作后回去玩。

  • 我最初开始输入评论,但空间不够了。:-/ (4认同)