Git子模块引用不是树

时间:2011-07-14 14:46:59

标签: git git-merge git-submodules git-commit git-pull

这里的开发人员运行了我们建议的git使用步骤,并且丢失了子模块提交。我知道这个错误意味着她推进了超级项目而不是子模块,但她否认了这一点,并且有她向我展示的命令历史。以下是导致此问题的步骤。我想了解如何告诉她将来避免这种情况。

  • 她在子模块和超级项目中承诺。
  • 她最近在她的树枝上拉了一下。这导致子模块冲突,没有真正的内容冲突
  • 她在超级项目中运行git commit -a来解决它。 (理解这种类型的冲突也会有所帮助。)
  • 她从另一个分支机构进行了合并,并在两个地方进行了合并。
  • 她运行了一个全局推送,它可以进入每个子模块,运行推送然后在超级项目中运行推送。

此时,她在子模块中的原始提交中提交的工作从git log消失了。

1 个答案:

答案 0 :(得分:1)

我认为当她解决子模块冲突时,提交失败了。可以按照this question中的说明检索它。

或运行

gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )

(这是来自this question

仅在原始仓库上执行此操作(因为git clone将删除悬空提交),并在之前对其进行备份。