git父树不小心被推入子树

时间:2015-04-09 06:01:14

标签: git git-push git-subtree

我将一个存储库拆分为3个,一个带有git子树的跟踪存储库,以及两个存储库,我将其拆分为模块。不知何故,我设法将带有子树的版本推送到其中一个子库,这搞乱了结构。

这里它们仅供参考:

  • child1,现在搞砸了

  • child2,这似乎没问题

  • parent,这应该包含其他两个

如何恢复存储库?

1 个答案:

答案 0 :(得分:1)

首先,进行备份,因为你将掌握历史记录。

在本地child1存储库中,在问题开始之前确定版本的哈希值,然后将所有历史记录一直吹掉:

cd path/to/separate/broken/child1
git reset --hard 7b202bfc915042c714aeca9516daf67d81c36b61

强制将这些更改推送到远程

git push --force

切换后的问题现在应该消失了。切换到父级,然后正确推送更改

cd path/to/parent1
git subtree push --prefix path/to/child1/in/parent remotechildname master

然后应该解决问题