git 父树意外推入子树

git parent tree accidentally pushed into subtree

我将一个存储库分成 3 个,一个带有 git 子树的跟踪存储库,以及两个我分成模块的存储库。我以某种方式设法将带有子树的版本推送到其中一个子存储库,这弄乱了结构。

这里供参考:

如何恢复存储库?

首先,做一个备份,因为你将破坏历史。

在本地 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

那么问题应该就解决了